jQuery ajax授权令牌标头失败

时间:2013-03-11 07:14:03

标签: ajax jquery ssl http-headers

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请求都会发生这些类型的消息。所以我基本上不知道如何继续。

1 个答案:

答案 0 :(得分:1)

使用有效的SSL证书。

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