将复制"Access-Control-Allow-Origin:*"标题会破坏CORS吗?

Pap*_*eud 2 ajax https http-headers cors

所以我们有一个提供JSON的http资源.它增加了一个

Access-Control-Allow-Origin: *
Run Code Online (Sandbox Code Playgroud)

旗.所以这可以加载CORS ... 除了(所以我被告知)有一些IE9怪癖,这意味着它仍然无法在IE9中工作,但如果这是一个https资源它会工作.

因此,我们设置现有的https代理以包含此资源.只有那个https资源还添加了Access-Control-Allow-Origin:*标头,因此响应包含两个这样的标头.

而这似乎根本不起作用.从实验上看,如果我从"内部"http资源中删除标题,代理版本(现在只包含一个标题)确实有效.只需在Chrome,Firefox中使用jQuery CORS进行测试.

是对的吗?所以我需要做的是(有人)修复https代理以"设置"标题而不是"添加"吗?

mon*_*sur 6

CORS符合规范明确指出:

如果响应包含零个或多个Access-Control-Allow-Origin标头值,则返回失败并终止此算法.

所以你是对的,你应该只有一个Access-Control-Allow-Origin标题.