服务端解决跨域问题的方案(一)
来源:互联网 发布:淘宝没有添加销售属性 编辑:程序博客网 时间:2024/05/22 03:35
转自: http://blog.csdn.net/james_wade63/article/details/50772041
跨域是指html文件所在的服务器与ajax请求的服务器是不同的ip+port,例如:
- ‘192.168.1.1:8080’ 与 ‘192.168.1.2:8080’是不同的域。
- ‘192.168.1.1:8080’ 与 ‘192.168.1.1:8081’是不同的域。
解决此类问题的方法很多,有需要客户端和服务端都要更改的,例如jsonp,iframe等等;有只需要客户端更改的,这种情况只能出现在hybrid app开发中,即通过调用native方法来进行网络请求;有只需要服务端配置的,下面介绍3种服务端配置的方法。
第一种
如果您使用的mvc框架是spring4.2以上的话,一个@CrossOrigin就可以搞定。将@CrossOrigin加到Controller上,那么这个Controller所有的请求都是支持跨域的,代码如下:
@Controller@CrossOriginpublic class GreetingController {
将@CrossOrigin加到请求方法上,那么这个请求是支持跨域的,代码如下
@CrossOrigin @RequestMapping("/greeting") public @ResponseBody Greeting greeting(@RequestParam(required=false, defaultValue="World") String name) {
- 1
- 2
- 3
更详细的@CrossOrigin介绍,请参看这里
第二种
全局配置,也需要spring4.2以上。
@Bean public WebMvcConfigurer corsConfigurer() { 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 >
阅读全文
0 0
- 服务端解决跨域问题的方案(一)
- 服务端解决跨域问题的方案(二)
- java服务端解决js跨域的问题
- 服务端(apache)解决Javascript跨域问题
- 服务端(apache)解决Javascript跨域问题
- java 服务端解决ajax跨域问题
- java服务端解决js跨域的问题 CORS(跨域资源共享) 的配置
- 跨域问题:解决跨域的三种方案
- 前端解决跨域问题的8种方案
- 前端解决跨域问题的8种方案
- 前端解决跨域问题的8种方案
- 前端解决跨域问题的8种方案
- 前端解决跨域问题的两种方案
- 前端解决跨域问题的8种方案
- 前端解决跨域问题的8种方案
- 前端解决跨域问题的8种方案
- 前端解决跨域问题的8种方案
- 前端解决跨域问题的8种方案
- makefile(三):隐含规则
- Python3爬虫详解
- 对lucene的一些关键类方法理解
- npm和cnpm的安装(window)
- 今年余下时间的的目标
- 服务端解决跨域问题的方案(一)
- 查看文件内容
- 深度学习 CNN卷积神经网络 LeNet-5详解
- C语言编写杨辉三角
- 弹性与性能兼俱,阿里云神龙云服务器全解析
- OBS Windows 编译
- linux安装mysql5.7.20,亲测
- 20个非常有用的Java程序片段
- 用RabbitMQ发邮件(结合PHPMailer)