Xmlhttprequest请求跨域
来源:互联网 发布:scarsong知乎 编辑:程序博客网 时间:2024/06/11 02:44
Xmlhttprequest请求跨域
同源策略
本人采用:
一:接口注解@CrossOrigin
二:过滤器对跨域请求特殊处理
HttpServletRequest servletRequest = (HttpServletRequest) request;
HttpServletResponse servletResponse = (HttpServletResponse) response;
String curOrigin = servletRequest.getHeader("Origin");
if (curOrigin != null) {
// 登陆相关不允许跨域
servletResponse.setHeader("Access-Control-Allow-Origin", "*");
servletResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
servletResponse.setHeader("Access-Control-Max-Age", "3600");
servletResponse.setHeader("Access-Control-Allow-Headers", "x-requested-with, Content-Type");
servletResponse.setHeader("Access-Control-Allow-Credentials", "true");
浏览器设置解决
http://www.cnblogs.com/laden666666/p/5544572.html
解决此类问题的方法很多,有需要客户端和服务端都要更改的,例如jsonp,iframe等等;有只需要客户端更改的,这种情况只能出现在hybrid app开发中,即通过调用native方法来进行网络请求;有只需要服务端配置的,下面介绍3种服务端配置的方法。
第一种
如果您使用的mvc框架是spring4.2以上的话,一个@CrossOrigin就可以搞定。将@CrossOrigin加到Controller上,那么这个Controller所有的请求都是支持跨域的,代码如下:
@Controller@CrossOriginpublic class GreetingController {
将@CrossOrigin加到请求方法上,那么这个请求是支持跨域的,代码如下
@CrossOrigin
@RequestMapping("/greeting")
public @ResponseBody Greetinggreeting(@RequestParam(required=false, defaultValue="World") String name) {
更详细的@CrossOrigin介绍,请参看这里
第二种
全局配置,也需要spring4.2以上。
@Bean
public WebMvcConfigurercorsConfigurer() {
return new WebMvcConfigurerAdapter() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/greeting-javaconfig").allowedOrigins("http://localhost:9000");
}
};
}
.addCorsMappings()中的参数代表支持跨域的url,.allowedOrigins()中的参数代表可以访问该接口的域名,设置为”*”可支持所有域。
第三种
这种方法就跟框架无关了,需要两个jar包,点击这里进行下载,两个jar包可以放的程序里,也可以放到tomcat中,然后将下面的配置写到web.xml中就可以了
< filter >
<filter-name > CORS</ filter-name >
<filter-class > com.thetransactioncompany.cors.CORSFilter</ filter-class >
<init-param >
<param-name > cors.allowOrigin</ param-name > <!--配置授信的白名单的域名!-->
<param-value > *</ param-value >
</init-param >
<init-param >
<param-name > cors.supportedMethods</ param-name >
<param-value > GET, POST, HEAD, PUT, DELETE</ param-value >
</init-param >
<init-param >
<param-name > cors.supportedHeaders</ param-name >
<param-value > Accept, Origin, X-Requested-With, Content-Type, Last-Modified</ param-value >
</init-param >
<init-param >
<param-name > cors.exposedHeaders</ param-name >
<param-value > Set-Cookie</ param-value >
</init-param >
<init-param >
<param-name > cors.supportsCredentials</ param-name >
<param-value > true</ param-value >
</init-param >
</ filter >
< filter-mapping >
<filter-name > CORS</ filter-name >
<url-pattern > /*</ url-pattern >
</ filter-mapping >
@Configuration@EnableWebMvcpublic class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**");
}
· }
您可以轻松地更改任何属性,以及配置适用于特定的路径模式的CORS:
@Configuration@EnableWebMvcpublic class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/api/**")
.allowedOrigins("http://domain2.com")
.allowedMethods("PUT","DELETE")
.allowedHeaders("header1","header2","header3")
.exposedHeaders("header1","header2")
.allowCredentials(false).maxAge(3600);
}
}
- Xmlhttprequest请求跨域
- js使用XMLHttpRequest实现跨域请求 POST请求
- AJAX(XMLHttpRequest)进行跨域请求方法详解
- AJAX(XMLHttpRequest)跨域请求笔记(一)
- AJAX(XMLHttpRequest)进行跨域请求方法详解
- AJAX(XMLHttpRequest)进行跨域请求方法详解
- AJAX(XMLHttpRequest)进行跨域请求方法详解
- AJAX(XMLHttpRequest)进行跨域请求方法详解
- IE7+浏览器下XMLHttpRequest跨域请求安全配置
- AJAX(XMLHttpRequest)进行跨域请求方法详解(一)
- AJAX(XMLHttpRequest)进行跨域请求方法详解
- AJAX(XMLHttpRequest)进行跨域请求方法详解
- {{js跨域请求解决方案续}}Cross-domain XMLHttpRequest(使用Apache mod_rewrite实现跨域请求)
- XMLHttpRequest的同域请求和跨域请求以及jsonp
- 解决浏览器在本地无法跨域请求,不支持Ajax请求,XMLHttpRequest不能加载的问题
- XMLHttpRequest 跨域访问
- XMLHttpRequest 跨域问题
- AJAX(XMLHttpRequest)进行跨域请求方法详解(一)
- 数据库到底哪家强?
- C#使用特性自动保存属性值
- 【集训Day4 动态规划】轮船问题
- NYOJ 1249 物资调度(DFS+剪枝)
- slf4j和log4j的源码及异步日志
- Xmlhttprequest请求跨域
- C++中字符串处理函数
- git init 与 git init --bare 的区别
- App登陆java后台处理和用户权限验证
- java中的变量(成员变量、本地变量、类变量)
- 第九篇:Bug管理系统UML2.0建模实例(一)
- 对中国IT行业的拙见
- HDU 2276 Kiki & Little Kiki 2
- ZooKeeper相关错误的解决