CORS
CORS (Cross-Origin Resource Sharing,跨域资源共享)是一个系统,它由一系列传输的HTTP头组成,这些HTTP头决定浏览器是否阻止前端JavaScript 代码获取跨域请求的响应
同源安全策略默认阻止“跨域”获取资源。但是CORS给了web服务器这样的权限,即服务器可以选择,允许跨域请求访问到它们的资源。
CORS 头
Access-Control-Allow-Origin
- 是一个响应头
- 用于指示该响应的资源能共享给哪些域。
语法
Access-Control-Allow-Origin: *
Access-Control-Allow-Origin: <origin>
指令
*
:对于不需具备凭证(credentials)的请求,服务器会以“*”作为通配符,从而允许所有域都具有访问资源的权限。<origin>
:指定一个可以访问资源的URI。
实例
如需允许所有资源都可以访问您的资源,您可以如此设置:
Access-Control-Allow-Origin: *
如需允许https://developer.mozilla.org访问您的资源,您可以设置:
Access-Control-Allow-Origin: https://developer.mozilla.org
CORS和缓存
如果服务器未使用“*”,而是指定了一个域,那么为了向客户端表明服务器的返回会根据Origin请求头而有所不同,必须在Vary响应头中包含Origin。
Access-Control-Allow-Origin: https://developer.mozilla.org
Vary: Origin
Origin
请求首部字段 Origin 指示了请求来自于哪个站点。该字段仅指示服务器名称,并不包含任何路径信息。该首部用于 CORS 请求或者 POST 请求。除了不包含路径信息,该字段与 Referer 首部字段相似。
语法
Origin: ""
Origin: <scheme> "://" <host> [ ":" <port> ]
指令
<scheme>
:请求所使用的协议,通常是HTTP协议或者它的安全版本HTTPS协议。<host>
:服务器的域名或 IP 地址。<port> 可选
:服务器正在监听的TCP 端口号。缺省为服务的默认端口(对于 HTTP 请求而言,默认端口为 80)。
示例
Origin: https://developer.mozilla.org