【发布时间】:2015-09-30 12:18:54
【问题描述】:
我在 MDN 网站上读到了这篇文章:
让我们看看这种情况下浏览器会向服务器发送什么, 让我们看看服务器是如何响应的:
GET /resources/public-data/ HTTP/1.1
Host: bar.other
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1b3pre) Gecko/20081130 Minefield/3.1b3pre
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Referer: http://foo.example/examples/access-control/simpleXSInvocation.html
Origin: http://foo.example
HTTP/1.1 200 OK
Date: Mon, 01 Dec 2008 00:23:53 GMT
Server: Apache/2.0.61
Access-Control-Allow-Origin: *
Keep-Alive: timeout=2, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: application/xml
[XML Data]
第 1 - 10 行是 Firefox 3.5 发送的标头。请注意,主要 这里需要注意的 HTTP 请求标头是 Origin: 第 10 行的标头 上面,这表明调用来自 域名http://foo.example。
为什么服务器会发送此行:
访问控制允许来源:*
在这种情况下,服务器以 Access-Control-Allow-Origin 响应:
- 这意味着该资源可以被任何域以跨站点的方式访问。
但是浏览器是否会读取这一行并且不允许资源通过,除非允许跨站点请求?为什么它是这样构造的?服务器不应该进行限制而不是浏览器接收此行吗?
【问题讨论】:
标签: cors