我试图理解CORS,但为什么服务器发送允许访问选项?
我在MDN网站上读到: 让我们看看在这种情况下浏览器将向服务器发送什么, 让我们看看服务器如何响应: 第1-10行是Firefox3.5发送的标题。请注意,主要 注意HTTP请求头这里是第10行的Origin:header 这表明调用来自 域名 服务器为什么发送此行: Acesss控件允许原点:* 在这种情况下,服务器会以访问控制允许源代码进行响应:我试图理解CORS,但为什么服务器发送允许访问选项?,cors,Cors,我在MDN网站上读到: 让我们看看在这种情况下浏览器将向服务器发送什么, 让我们看看服务器如何响应: 第1-10行是Firefox3.5发送的标题。请注意,主要 注意HTTP请求头这里是第10行的Origin:header 这表明调用来自 域名 服务器为什么发送此行: Acesss控件允许原点:* 在这种情况下,服务器会以访问控制允许源代码进行响应: 这意味着任何域都可以跨站点方式访问资源 但是,浏览器是否读取这一行,并且不允许资源传递,除非允许跨站点请求?为什么它的结构是这样的?服务器不应
- 这意味着任何域都可以跨站点方式访问资源
服务器安全(以及正确处理用户提供的数据、非幂等操作、会话等)是一个单独的主题,因为请求可能来自同一个域或在浏览器之外创建;因此,这种安全性与CORS/同源关注点是分开的。但有趣的是,我用Rails构建了一个API,我已经可以使用浏览器看到JSON响应,但我无法看到通过另一个前端框架使用API。如果我使用chrome访问端点,它将在我的服务器中没有任何CORS实现的情况下工作。。。这是为什么?@Jwan622 SOP(以及CORS)会影响客户端代码/操作直接“访问”返回数据的能力;它[不一定]影响浏览器工具查看响应的能力。由于SOP应用于浏览器中(通常即使嵌入),这是我对此类查询的唯一“响应”——与原始问题无关——给出了模糊的描述,没有SSCCE。
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]