2018-01-30

注:大部分内容来自@郭寻抚的简书

1.什么是跨域HTTP请求?

现代浏览器出于安全的考虑,使用 XMLHttpRequest对象发起 HTTP请求时必须遵守同源策略,否则就是跨域的HTTP请求,默认情况下是被禁止的。跨域HTTP请求是指A域上资源请求了B域上的资源,举例而言,部署在A机器上Nginx上的js代码通过ajax请求了部署在B机器Tomcat上的RESTful接口。

协议不同、IP(域名)不同、或者端口不同,都会造成跨域问题。为了解决跨域的问题,曾经出现过jsonp、代理文件等方案,应用场景受限,维护成本高,直到HTML5带来了CORS协议。

CORS是一个W3C标准,全称是”跨域资源共享”(Cross-origin resource sharing),允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。它通过服务器增加一个特殊的Header[Access-Control-Allow-Origin]来告诉客户端跨域的限制,如果浏览器支持CORS、并且判断Origin通过的话,就会允许XMLHttpRequest发起跨域请求。

2.CORS常见Header:

Access-Control-Allow-Origin:http://somehost.com表示允许http://somehost.com发起跨域请求。

Access-Control-Max-Age:86400 表示在86400秒内不需要再发送预校验请求。

Access-Control-Allow-Methods: GET,POST,PUT,DELETE 表示允许跨域请求的方法。

Access-Control-Allow-Headers: content-type 表示允许跨域请求包含content-type

3.在spring boot工程中配置CORS跨域

这里匹配了所有的URL,允许所有的外域发起跨域请求,允许外域发起请求任意HTTP Method,允许跨域请求包含任意的头信息。

@ConfigurationpublicclassCORSConfiguration{

@Bean

public WebMvcConfigurer corsConfigurer(){

return new WebMvcConfigurerAdapter() {@Override

public void addCorsMappings(CorsRegistry registry){

 registry.addMapping("/**")

 .allowedHeaders("*")

 .allowedMethods("*") 

 .allowedOrigins("*");

 }}; }}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容