访问控制允许来源:* 不工作?

use*_*717 5 mod-python cors

经典的“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)

pro*_*e-e 6

在响应中启用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 响应中设置。