0

私は、事前交渉が完了するまで実際のリクエストを延期する oauth のようなフローを設定しています。

予備的なネゴシエーションは機能しますが、目的のリソースを要求しようとすると、次のような動作が発生します。

  • django サーバーは、ネゴシエーションの各ステップで POST 要求をログに記録します。
  • angular クライアントは、ネゴシエーションの各ステップの OPTIONS および POST リクエストをログに記録します。

ここまでは順調ですね。

次に、リソースの OPTIONS リクエストを取得します。error$http のリクエスト関数がステータス 0 でコールバックを実行している間、このリクエストはブラウザで保留中のままスタックします。

angular から次のようなエラー メッセージが表示されます: リソースの読み込みに失敗しました。

これは、$http に渡すリクエスト オブジェクトです。

cache: false
data: null
headers: {
  Authorization: OAuth realm="all"oauth_consumer_key="21846675797"oauth_signature_method="PLAINTEXT"oauth_token="89676366323"oauth_timestamp="1376236699"oauth_nonce="dQBGqqTQf"oauth_signature="GET&localhost%3A16080%2Fkauth%2Ftest%2F&oauth_consumer_key%3D%2221846675797%22%26oauth_nonce%3D%22dQBGqqTQf%22%26oauth_signature_method%3D%22PLAINTEXT%22%26oauth_timestamp%3D%221376236699%22%26oauth_token%3D%2289676366323%22"
}
method: "GET"
params: null
url: "localhost:16080/kauth/test/"

署名に干渉する可能性があることを恐れて、すべての標準ヘッダーを削除しました。

$http.defaults.headers.common = {};
$http.defaults.headers.get = {};
$http.defaults.headers.post = {};
$http.defaults.useXDomain = true;

django サーバーは、この要求に対して何もログに記録しません。

任意のポインタをいただければ幸いです。

4

1 に答える 1

0

私は答えを見つけました...

URL の先頭にプロトコル (http://) を含めるとうまくいきます。

于 2013-08-11T16:57:54.297 に答える