CORS(跨域资源共享)理论篇
2017-12-01 18:07
411 查看
原文链接:http://www.dubby.cn/detail.html?id=9065
CORS:Cross-Origin Resource Sharing (跨域资源共享)
其中,origin 参数的值指定了允许访问该资源的外域 URI。对于不需要携带身份凭证的请求,服务器可以指定该字段的值为通配符,表示允许来自所有域的请求。
例如,下面的字段值将允许来自 http://www.dubby.cn 的请求:
CORS:Cross-Origin Resource Sharing (跨域资源共享)
HTTP 响应首部字段
Access-Control-Allow-Origin
响应首部中可以携带一个 Access-Control-Allow-Origin 字段,其语法如下:Access-Control-Allow-Origin: <origin> | *
其中,origin 参数的值指定了允许访问该资源的外域 URI。对于不需要携带身份凭证的请求,服务器可以指定该字段的值为通配符,表示允许来自所有域的请求。
例如,下面的字段值将允许来自 http://www.dubby.cn 的请求:
Access-Control-Allow-Origin: http://www.dubby.cn[/code]
如果服务端指定了具体的域名而非“*”,那么响应首部中的 Vary 字段的值必须包含 Origin。这将告诉客户端:服务器对不同的源站返回不同的内容。Access-Control-Expose-Headers
在跨域访问时,XMLHttpRequest对象的getResponseHeader()方法只能拿到一些最基本的响应头,Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma,如果要访问其他头,则需要服务器设置本响应头。
Access-Control-Expose-Headers 头让服务器把允许浏览器访问的头放入白名单,例如:Access-Control-Expose-Headers: X-My-Custom-Header, X-Another-Custom-Header
这样浏览器就能够通过getResponseHeader访问X-My-Custom-Header和 X-Another-Custom-Header 响应头了。Access-Control-Max-Age
Access-Control-Max-Age 头指定了preflight请求的结果能够被缓存多久,请参考本文在前面提到的preflight例子。Access-Control-Max-Age: <delta-seconds>
delta-seconds 参数表示preflight请求的结果在多少秒内有效。Access-Control-Allow-Credentials
Access-Control-Allow-Credentials 头指定了当浏览器的credentials设置为true时是否允许浏览器读取response的内容。当用在对preflight预检测请求的响应中时,它指定了实际的请求是否可以使用credentials。请注意:简单 GET 请求不会被预检;如果对此类请求的响应中不包含该字段,这个响应将被忽略掉,并且浏览器也不会将相应内容返回给网页。Access-Control-Allow-Credentials: true
也就是如果不设置这个,那么带cookie的请求是可以发给服务端的,但是浏览器也不会将相应内容返回给网页。Access-Control-Allow-Methods
Access-Control-Allow-Methods 首部字段用于预检请求的响应。其指明了实际请求所允许使用的 HTTP 方法。Access-Control-Allow-Methods: <method>[, <method>]*Access-Control-Allow-Headers
Access-Control-Allow-Headers 首部字段用于预检请求的响应。其指明了实际请求中允许携带的首部字段。Access-Control-Allow-Headers: <field-name>[, <field-name>]*HTTP 请求首部字段
Origin
Origin 首部字段表明预检请求或实际请求的源站。Origin: <origin>
origin 参数的值为源站 URI。它不包含任何路径信息,只是服务器名称。
注意,不管是否为跨域请求,ORIGIN 字段总是被发送。Access-Control-Request-Method
Access-Control-Request-Method 首部字段用于预检请求。其作用是,将实际请求所使用的 HTTP 方法告诉服务器。Access-Control-Request-Method: <method>Access-Control-Request-Headers
Access-Control-Request-Headers 首部字段用于预检请求。其作用是,将实际请求所携带的首部字段告诉服务器。Access-Control-Request-Headers: <field-name>[, <field-name>]*
相关文章推荐
- tomcat7.0配置CORS(跨域资源共享)
- 跨域资源共享 CORS 详解
- 跨域资源共享 CORS 详解
- cors跨域资源共享实现
- 阿里云对象存储OSS————跨域资源共享(CORS)(m3u8 无法加载m3u8:跨域访问被拒绝)
- GeoServer配置CORS(跨域资源共享)
- 跨域资源共享 CORS 详解
- 使用CORS(跨站资源共享Cross-Origin Resource Sharing) 来实现跨域访问
- 跨域资源共享 CORS 详解( 阮一峰)
- (转)跨域的另一种解决方案——CORS(Cross-Origin Resource Sharing)跨域资源共享
- 跨域资源共享 CORS 详解
- 跨域资源共享 CORS 详解
- CORS跨域资源共享
- 跨域资源共享 CORS 详解
- 跨域资源共享 CORS 详解
- CORS(跨域资源共享)
- CORS(跨域资源共享) 的配置
- 跨域资源共享CORS学习笔记
- 跨域资源共享(CORS)安全性浅析
- 解决ajax跨域请求的问题-cors(资源共享方案)