this John Resig articleでは、彼はjavascriptで辞書サイズの単語リストを扱っており、彼はCDNからajax経由でコンテンツを読み込んでいます。このクロスドメイン要求の回避策はなぜ機能しますか?
単語は、単語を区切る改行で読み込まれます。その後、クロスドメインが失敗すると彼は言う:
私はCDNから辞書を読み込むことはできません! CDNは別のサーバー(または別のサブドメイン、ここでは )に配置されているため、ブラウザのクロスオリジン ポリシーでこれらの種類の要求を禁止しています。すべてが失われていません - 辞書ファイルにシンプルな微調整を加えて、 ドメインに読み込むことができます。
まず、辞書ファイル内のすべてのエンドラインをスペースで置き換えます。 次に、行全体をJSONPステートメントでラップします。したがって、最後の の結果は次のようになります。
dictLoaded( 'aah aaing aahing aahs aal ... zyzzyvas zzz');
これにより、ファイルにAjaxリクエストを行い、ブラウザが提供するすべてのキャッシングと 圧縮の恩恵を受けながら、 が期待するように動作させることができます。
私がこれを正しく読んでいる場合は、元のコンテンツだけに彼のメソッドdictLoaded('original content')
を追加するだけで、ajaxリクエストが失敗しなくなります。
これは実際にはすべて(関数+パラメータに変換)ですか? JSONPがクロスドメインアクセス制限の問題を解決するのはなぜですか?
良い答えを返信、ありがとうございました。 scriptタグにはページがロードされているので、ajax呼び出しが何らかのイベントによってトリガーされる伝統的なajax呼び出しをスクリプトタグの使い方でどのように置き換えることができますか? – Kristian
@Kristian AJAXは、Cross-Origin Resource Sharing(CORS)を使用している場合を除いて、クロスドメイン通信を制限する同じ起点ポリシーによって制限されています。 CORSは、CORS要求を許可するようにサーバーを設定する必要があります。しかし、JSONPはそうではありません。これは単にスクリプトを読み込んで実行するだけです。バックエンドの介入がなく、 "純粋なクライアント側の魔法"のようなものです。 – Joseph
申し訳ありませんが、私は曖昧に私の質問に言わなければならないでしょう。 rephrased:jsonp/scriptタグメソッドは、最初のページ読み込み時に実行されることに制限されていませんか?イベントが発生するたびにjsonのリクエストが発生しますが、このタイミングの違いをどのように調整すればよいですか? – Kristian