CORS,chrome浏览器发送origin头,导致服务器返回403
服务器端使用Vertx,并使用了CorsHandler实现了CORS功能。由于前后端都是部署在同一个站点上,
以为不会触发CorsHandler相关功能,故CORS的access-control-allow-origin此处设置的是我本地测试用的地址。
后来部署到我们的测试环境,发现使用firefox浏览器则功能正常,而chrome则不行,查看错误是接口返回403 CORS Rejected - Invalid origin
,原来是chrome发送请求会携带origin:xxxx
、Sec-Fetch-Mode:cors
,在这种情况下服务器会比较实际的origin跟设置的access-control-allow-origin比较是否相同,不相同则返回403。于是更改测试的环境access-control-allow-origin的值,然后chrome功能也正常了。
see also: Sec-Fetch-Mode:cors
,Sec-Fetch-Site: same-origin
网友评论