2

jQuery 1.9.1

该请求永远不会被发送,并且似乎只是出错了。console.log输出显示Request failed: error我不知道如何进一步调试。

$.ajax({
    beforeSend: function (xhr) { xhr.setRequestHeader ('Authorization', 'Token c576f0136149a2e2d9127b3901015545') },
    type: "GET",
    url: "https://example.com/endpoint",
    dataType: "json"
}).done(function( msg ) {
    console.log( msg );
}).fail(function(jqXHR, textStatus, errorThrown) {
    console.log( "Request failed: " + textStatus );
    console.log( errorThrown );
});

检查谷歌浏览器显示的网络流量

  • Method: OPTIONS
  • Status: (canceled)
  • Type: Pending

但是使用 curl 工作正常:

curl https://example.com/endpoint -H 'Authorization: Token token="c576f0136149a2e2d9127b3901015545"'

这是 jsFiddle:http: //jsfiddle.net/2vtyD/1/

注意:这不是问题,Access-Control-Allow-Origin因为我有这部分工作。

我知道我一定错过了什么……

更新:

当我切换到http. 只有在使用https时才会出现这个问题。我认为这可能是因为我使用的是自签名证书(无效)。但其他 SSL 请求(非授权即不是 'OPTIONS' )工作得很好。所以它似乎只是 SSL 和 OPTIONS 请求的组合。chrome 中的状态表示已取消,并且通过查看服务器日志 apache 日志显示了一些活动,但它从未使其成为 rails web 应用程序。

这是apache日志的片段:

[info] [client 10.0.2.2] (70007)The timeout specified has expired: SSL input filter read failed.
[info] [client 10.0.2.2] Connection closed to child 10 with standard shutdown (server example.com:443)
[info] [client 10.0.2.2] Connection to child 11 established (server example.com:443)
[info] Seeding PRNG with 656 bytes of entropy
[info] [client 10.0.2.2] (70014)End of file found: SSL input filter read failed.
[info] [client 10.0.2.2] Connection closed to child 11 with standard shutdown (server example.com:443)

但是,所有 SSL 请求都会出现这些类型的消息。所以我基本上不知道如何进行。

4

1 回答 1

1

使用有效的 SSL 证书。

出于某种原因,GET、POST、PUT 和 DELETE 请求可以与自签名证书一起正常工作。但是 OPTIONS 请求没有。使用有效的 SSL 证书一切正常。

于 2013-03-12T18:25:28.340 回答