2

jQuery1.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 );
});

Google Chrome ショーでのネットワーク トラフィックの検査

  • 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 リクエストの組み合わせにすぎないようです。クロムのステータスはキャンセルされており、サーバーログを見るとApacheログにいくつかのアクティビティが表示されますが、レール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 に答える