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请求都会发生这些类型的消息。所以我基本上不知道如何继续。
答案 0 :(得分:1)
使用有效的SSL证书。
出于某种原因,GET,POST,PUT和DELETE请求可以使用自签名证书正常工作。但OPTIONS请求没有。使用有效的SSL证书,一切都会正常工作。