所以我们有一个提供JSON的http资源。它增加了一个
Access-Control-Allow-Origin: *
标记。所以这可以加载CORS ... 除了(所以我被告知)有一些IE9怪癖意味着这仍然无法在IE9中工作,但如果这是一个https资源它会工作。
因此,我们设置现有的https代理以包含此资源。只有那个https资源还添加了Access-Control-Allow-Origin:*标头,因此响应包含两个这样的标头。
这似乎根本不起作用。从实验上看,如果我从“内部”http资源中删除标题,代理版本(现在只包含一个标题)确实有效。只需在Chrome,Firefox中使用jQuery CORS进行测试。
是吗?所以我需要做的是(有人)修复https代理以“设置”标题而不是“添加”吗?
答案 0 :(得分:6)
CORS spec明确指出:
如果响应包含零个或多个 Access-Control-Allow-Origin标头值,返回失败并终止 这个算法。
所以你是对的,你应该只有一个Access-Control-Allow-Origin
标题。
答案 1 :(得分:2)
如果重复的标头具有不同的值,则它们将连接成一个值。正如monsur指出的那样,这将导致标题无效,如规范中所述。
拥有相同值的重复标题可能适用于某些客户端(Chrome允许通过,至少在撰写本文时)但是Mozilla Developer Network says:
返回的资源可能有一个Access-Control-Allow-Origin标头...
所以,一个标题来控制它们。