0

$.postJava サーブレットへの JQuery を作成しようとしています。Tomcat サーバーを Apache に統合しました。Tomcat サーバーが Apache と同じマシン上にある場合、成功し$.postました。(Java サーブレットがそれを受け取ります)。

Tomcat サーブレットがリモート マシン上にあり$.post(http://ip:8080/App/MyServlet,...)、サーブレットを作成すると何も受信しません。

$.post自分のマシンで JQuery を作成すると、次のようになります$.post(Myservlet,.....)。私がこのようにしようとすると、うまくいき$.post(http://localhost:8080/App/MyServlet,...)ません。

$.postリモートURIへのJQueryを作成するにはどうすればよいですか?

Tomcat サーブレットのリモート uri はどのように見えるべきですか?

ありがとう、

4

1 に答える 1

2

Jquery はブラウザー (クライアント側) で実行されます。これは、ブラウザーの同一生成元ポリシーの対象となることを意味します。これは良いことです。

これは、GET または POST である ajax リクエストは、ajax リクエストを行うページのドメインに対してのみ行うことができることを意味します。

ポリシーをバイパスするには 2 つの方法があります。1 つ目は、リモート サーバーにリクエストを保証させることです。2 つ目は、ブラウザの同一生成元ポリシーを回避することです。

したがって、リモートサーバーを制御している場合、または管理者がサーバー/ドメインを開いて ajax 要求を拒否する要求を受け取る場合、サーバーは次のヘッダーを送信するだけで済みます。

Access-Control-Allow-Origin: your-local-domain.org

ブラウザーは応答ヘッダーを取得し、要求元のページが上記のリストにあることを確認して、応答を許可します。

リモートサーバーを制御できない場合は、同じオリジンポリシーを回避するためのより巧妙な方法を次に示します。

  1. パラメーターを使用してローカル URL に ajax 要求を作成し、それをサーブレットに渡し、そのプロキシ スクリプトがサーブレットが応答するものを返すようにします。

  2. JSONP (正直なところ、まだよくわかりませんが、jquery の ajax のドキュメントに記載されています)

  3. スクリプト インジェクション。スクリプト要素srcが同一生成元ポリシーによって制限されていないという事実を利用します。

3 つのうち、1 つ目は最も安全で、ハッキングが少なく、(いわば) 最も正直だと思いますが、JSONP は、jquery でクロスドメイン リクエストを取得するためのシンプルで簡単な方法になりました。

于 2012-04-23T11:10:22.053 に答える