1

我有以下执行某种登录的咖啡脚本:

signIn: (url, completion) ->
  $.ajax
    method: 'GET'
    url: url
    dataType: 'json'
    error: (jqXHR, status, errorThrown) ->
      completion false, errorThrown
    success: (data)->
      completion true, data.Identifier

当我在浏览器中检查给定的 URL 时,我得到了一个有效的 JSON 响应。

但是,当使用 JavaScript 执行此调用时,我在控制台中收到以下错误。请注意,我已经更改了混淆的 URL:

XMLHttpRequest cannot load http://my.servicedomain.com/session/someIdentifier?access_token=secret. 
Origin http://html.server.net is not allowed by Access-Control-Allow-Origin.

这些是我从my.servicedomain.com服务器获取的标头:

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 1417
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: Authorization
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
X-Powered-By: ASP.NET
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: Authorization
Date: Wed, 10 Jul 2013 14:24:35 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Connection: Keep-Alive

为什么我会收到此错误,即使我Access-Control-Allow-Origin: *在响应标头中有?

4

1 回答 1

0

我自己刚刚想出了答案。我知道我的回复中有重复的标题,但我假设这不是问题。

根据CORS 规范,这似乎是一个问题:

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

这也在此 SO Thread 中进行了描述:

重复的“Access-Control-Allow-Origin:*”标头会破坏 CORS 吗?

于 2013-07-10T14:32:50.223 回答