0

概要

私は現在、内部 API を使用してデータを取得する一連のグラフで Web パフォーマンス データを表示する jQuery/HTML5 プロジェクトに取り組んでいます。API は Yii を使用していますが、私はそれに取り組んでいないため、自分で変更したり実験したりすることはできません。

基本的に、API が問題の根本的な原因なのか、それとも jQuery の Ajax が正しくないという問題なのかを誰かが特定するのを手伝ってくれることを願っています。

私のアプリケーションが通過するプロセスの簡単な説明...

  1. アプリケーションが読み込まれ、ユーザーの詳細を使用して API で認証されます。API から API キーを受け取ります。
  2. キーが取得された後、API からデータを取得して Web パフォーマンス データとして表示するために、いくつかの呼び出しが行われます。
  3. 設定された間隔でジェネリックがデータベースに呼び出され、API キーの有効期限が切れているかどうかがチェックされます。
  4. キーの有効期限が切れている場合は、手順 1 で説明したように、API に新しい API キーの別の要求を行います。API キーの取得に問題がある場合は、ユーザーがキックオフされます。
  5. データの取得を除いてサイクルを再開します。

問題

プロジェクトと API の両方が別々のサブドメインにあるため、すべての Ajax 呼び出しはクロスドメインに対して行われます。これらは、JSONP と jQuery コールバックを使用して行われます。

私が抱えている問題は、キーが有効かどうかを認証する必要があるときに、有効でなくなった場合、API が Ajax が登録しない 401 エラーを返すことです。Firefox で API URL を表示すると、返された Json データがコールバックでラップされていることがわかりますが、firebug を確認すると、リクエストはあるが応答がないことが示されます。

基本的に、API が 200 OK ではないデータを返す場合、応答ヘッダーはまったく送信されません。

ただし、端末で cUrl を使用して手動で API を呼び出し、応答ヘッダーと Google Chrome を受け取りました。

これが Firefox/jQuery のよく知られた問題なのか、それとも Yii API の問題なのかを誰かが教えてくれたら、とてもありがたいです。

4

1 に答える 1

-1

ajax 呼び出しの前にこれを追加してみてください。

jQuery.support.cors = true; // force cross-site scripting in IE
于 2012-10-19T13:12:04.623 に答える