【问题标题】:Where to write Access-Control-Allow-Origin: or Origin在哪里写 Access-Control-Allow-Origin: 或 Origin
【发布时间】:2014-03-10 08:30:43
【问题描述】:
可能这是一个愚蠢的问题,但我找不到任何解决方案。
我正在处理跨域问题。所以我通过搜索知道我需要设置我的Access-Control-Allow-Origin: 或Origin 标签。但是哪里??建议在标题中使用这些。
我找不到任何可以解释这一点的东西。谁能告诉我在哪里放置这个标签以及如何放置!!
在head 标签中?或DOCTYPE ?请帮忙......我需要使用JavaScript还是什么?
【问题讨论】:
标签:
javascript
html
cross-browser
cross-domain
same-origin-policy
【解决方案1】:
一种方法是将您的代码放在服务器端:
response.addHeader("Access-Control-Allow-Origin", "*");// To allow all domains
仅限制对特定域的访问:
response.addHeader("Access-Control-Allow-Origin", "http://www.example.com");
我在java servlet中使用过上面的代码,如果你使用不同的语言,你可以使用类似的方法。
【解决方案2】:
这应该作为 HTTP 标头传递,与 HTTP 协议一起使用。您的客户端向服务器发出请求,如下所示:
GET /cors HTTP/1.1
来源:http://api.bob.com
主办方:api.alice.com
接受语言:en-US
连接:保持活动
用户代理:Mozilla/5.0...
在您的回复中,您的服务器端代码必须手动为 Access-Control-Allow-Origin 添加 http 标头。很多时候,人们会简单地做这样的事情:
response.addHeader("Access-Control-Allow-Origin", "*");
但是,如果您需要进行任何类型的身份验证,请记住,如果您要发送凭据(通过在请求中使用 Access-Control-Allow-Credentials 标头,或在 jQuery ajax 调用中设置 withCredentials) ,那么您必须在响应标头中指定允许的来源:
response.addHeader("Access-Control-Allow-Origin", "http://api.bob.com");
此外,请务必处理飞行前的 OPTIONS 请求。
如果这没有帮助,这个网站几乎涵盖了所有场景:http://www.html5rocks.com/en/tutorials/cors/