@Component
public class CORSConfig implements WebMvcConfigurer{
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedHeaders("*")
.allowedMethods("*")
.allowCredentials(true);
WebMvcConfigurer.super.addCorsMappings(registry);
}
}
Connection keep-alive
Content-Type application/json
Date Mon, 26 Oct 2020 01:04:07 GMT
Keep-Alive timeout=60
Transfer-Encoding chunked
Vary Origin, Access-Control-Request-Method, Access-Control-Request-Headers
不再建议大家使用 WebMvcConfigurerAdapter
该类以过时
CORS: Cross Origin Resouce Shading 跨资源共享,定义了浏览器与服务器如何实现跨源通信.CORS 背后的基本思路就是使用自定义的 HTTP 头部允许浏览器和服务器相互了解,以确实请求火响应应该是成功还是失败。
对于简单的请求,比如 GET 或 POST 请求,没有自定义头部,而且请求体是 text/plain 类型,在发送请求前,浏览器在发送请求时会有一个额外的头部Origin Origin 头部包含发送请求的源,以便服务器确定是否为其提供响应。
在发送请求时,浏览器添加的 Origin
Origin:http://127.0.0.1:5500
整个请求头
GET /menu/all HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://127.0.0.1:5500/index.html
Origin: http://127.0.0.1:5500
Connection: keep-alive
Cache-Control: max-age=0
响应头:
Access-Control-Allow-Origin: http://127.0.0.1:5500
Access-Control-Allow-Origin 设置该源,表示允许该源访问。Java 代码里设置的
CORS 预检请求,除开 POST,GET 请求以外的其它高级请求需要被响应的话.浏览器会先发送一个 OPTIONS 请求,在该请求中设置请求头Access-Control-Allow-Method
需要被响应的方法 Access-Control-Allow-Headers
需要被响应的请求包含的请求头
服务器会在响应头中给出支持的信息
Access-Control-Allow-Origin: 支持的源
Access-Control-Allow-Methods: 支持的请求方法列表
Access-Control-Allow-Headers: 支持的自定义请求头
Access-Control-Allow-Max-Age: 缓存预检查请求的秒数
响应:
Access-Control-Allow-Origin: http://127.0.0.1:5500
Access-Control-Allow-Methods: GET, POST, OPTIONS, DELETE, PUT
Access-Control-Allow-Headers: origin
Access-Control-Allow-Max-Age: 1728000
MDN:@https://developer.mozilla.org/zh-CN/docs/Glossary/Preflight_request
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.