经典的“Origin ... is not allowed by Access-Control-Allow-Origin”问题。两台机器为同一个网站提供内容。当机器 A$('#main').load('link_to_resource_on_B')通过 jquery执行 a 时,机器 B 使用 mod_python 提供内容,并添加Access-Control-Allow-Origin: *标题。但由于某种原因,这仍然不起作用。我在 Chrome、Safari 和 Internet Explorer 上对此进行了测试。我通过命令行测试以检查响应标头,它似乎Access-Control-Allow-Origin: *在来自 B 的标头中成功。见下文。我可能会错过什么?
$ telnet localhost 80
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET /tests/python/test/env HTTP/1.1
host: 10.0.1.10
HTTP/1.1 200 OK
Date: Mon, 27 Feb 2012 02:05:33 GMT
Server: Apache/2.2.20 (Ubuntu)
Access-Control-Allow-Origin: *
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/html
Run Code Online (Sandbox Code Playgroud)
在响应中启用Access-Control-Allow-Origin标头是不够的。服务器端实现应该为飞行前 OPTIONS 请求提供适当的处理。特别是,必须在 OPTIONS 响应中设置以下 HTTP 标头:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST
Run Code Online (Sandbox Code Playgroud)
如果您的环境中使用了非标准 HTTP 标头,则 OPTIONS 响应中可能还需要其他 HTTP 标头,例如Access-Control-Allow-Headers。
请记住Access-Control-Allow-Origin: * HTTP 标头也必须在以下 GET 和 POST 响应中设置。
| 归档时间: |
|
| 查看次数: |
16865 次 |
| 最近记录: |