据我所知' Access-Control-Allow-Origin'用作CORS的一部分,以限制所有主机可以从给定的api服务器请求数据。此标志/变量值由服务器设置为响应的一部分。
我碰巧偶然发现了chrome extension,其中说:
允许您从任何来源请求任何带有ajax的网站。添加 响应 - '访问控制 - 允许 - 来源:*'头
开发人员工具。
摘要添加到回复标题规则 - '允许控制 - 允许 - 来源:*'
提示只需使用chrome标志[http://www.chromium.org/developers/how-tos/run-chromium-with-flags]
即可获得相同的行为chrome --disable-web-security
或
- allow-file-access-from-files --allow-file-access --allow-cross-origin-auth-prompt
这意味着从客户端我可以更改响应头。所以这意味着如果我在服务器上设置:' Access-Control-Allow-Origin:http://api.example.com'客户端可以覆盖此设置' Access-Control-Allow-Origin:*'。或者可能是我不想支持cors - 所以我没有设置它,但这仍然表明我支持CORS。
如果是这种情况,我的服务器端设置有什么意义?是不是多余的?
可能我在这里过于天真,而且没有得到它的基础知识。
答案 0 :(得分:1)
CORS是一种安全功能,可以保护客户端免受CORF或Cross Origin Request Forgery的攻击。它不是为了保护服务器,因为客户端可以简单地选择忽略它们。
CORF的一个例子是访问一个网站,该网站上的客户端代码代表您与另一个网站进行交互,执行诸如向网站提交数据或读取需要身份验证的数据等所有内容,主动身份验证会话。
理论上,如果没有CORS,就可以创建一个网站,从网络邮件提供商处获取您的电子邮件(前提是您当时已登录),然后将其发回服务器以供恶意个人阅读。< / p>
为避免这种情况,您不应在禁用此类安全功能的情况下浏览网页。它可用于简化开发,而不是一般浏览。