1

私はJavascript/Dojoの世界全体で徐々に良くなっています。しかし、私はdojo / request/iframeビジネス全体に混乱しています。Javascriptでは、セキュリティ上の理由からオリジンサーバーにのみ接続できることを知っています。それは当然のことです。しかし、人々が「iframeを使ってそれを回避する」ことを考え始めると、私は非常に迷子になります。

Dojo / resources / blank.html:

  • 含む<html><head><script>isLoaded = true;</script></head><body></body></html>
  • アプリケーションと同じサーバーでホストする必要があります。したがって、CDNからdojoを使用する場合は、このblank.htmlファイルをアプリケーションの送信元と同じサーバーに保存する必要があります。

http://livedocs.dojotoolkit.org/dojo/request/iframeのページでは、iframeについて次のように説明しています。

  • 呼び出し元ページを発信したサーバー以外のサーバーでサービスを呼び出す(クロスドメイン要求)。この場合、応答本文を読み取ることができないことに注意してください。データを送信することはできますが、応答を取得することはできません。戻りデータにアクセスする必要がある場合は、dojo / request/scriptを参照してください。

  • フォームからのファイルのアップロード(ファイル入力コントロールなど)。通常のXHRメカニズムは、セキュリティ対策としてファイル選択タグによって参照されるファイルデータにアクセスできません。dojo / request / iframeは、IFrameを介してこれらの呼び出しをプロキシすることにより、非同期でファイルのアップロードを実行できるようにします。

空のHTMLページはこれにどのように役立ちますか?(まあ、グローバル変数「isLoaded」を設定するもの...?)

また、上記の2つのポイントで応答を取得できないことを説明した後、ドキュメントは次のように続きます。

  • XMLを取得するように要求する例は、次のようになります。

だから...あなた検索できますか?

一歩下がって、「iframeを使用してクロスドメインリクエストを回避する」全体を本当に理解する必要があると思います。また、「通常のXHRメカニズム」(どのメカニズム?)がデータ参照にアクセスできないという問題を実際に理解する必要があります。選択タグ(どの選択タグですか?そして、とにかくリクエスト本文のデータではありませんか?)は、iFrameを介してそれらの呼び出しをプロキシできます(つまり、isLoadedを設定する単一の空のファイルですか?!?)

私は非常に混乱しています...そして失われました。誰かが私に少し指示を与えることができますか?

ありがとうございました...

メルク。

4

1 に答える 1

3

さて、私はそのページについて知りませんblank.htmlが、あなたの質問の2番目の部分は私が理解していることです。私の知る限り、ほとんどの(すべての)ブラウザーはXHR / JavaScriptからのクロスドメイン要求を拒否し、セキュリティ上の理由からファイルアップロードフォーム要素からデータを送信することもできません。可能であれば、ハッカーは(JavaScriptを挿入することで)他のドメインにデータを送信したり、アップロードされたファイルを読み取ったりするなどの恐ろしいことを行う可能性があります。

この問題を回避するには、iframeを使用できます。iframeはクロスドメインページを読み込むことができますが、問題は、クロスドメインリクエストの場合、iframeのコンテンツに簡単にアクセスできないことです。ただし、JavaScriptを使用すると、iframeのソースを設定できるため、iframeを介してデータを送信できます。

ファイルについても同じことが言えます。直接送信することはできませんが、iframeの機能を操作(およびデータ送信)できるため、iframeを介してファイルを送信できます。

したがって、TL; DR:ブラウザは、JavaScriptで実行できる特定のことをブロックします。

  • クロスドメインであるXHRを介したデータの送信
  • XHRを介してファイルデータを読み取る
  • クロスドメインであるiframeデータの読み取り

したがって、次のことができます。

  • iframeを介してクロスドメインのデータを送信する
  • iframeを介してファイルデータを読み取る
  • クロスドメインではないiframeを読む

したがって、クロスドメインリクエストでない限り、iframedojoモジュールを使用してファイルを読み取ることができます。

十分に理解できるように説明したと思います。

于 2013-03-08T17:36:02.260 に答える