2012-04-23 28 views
0

私はJava ServletにJQuery $.postを作成しようとしています。私は ApacheにTomcatサーバーを統合し、TomcatサーバーがApacheと同じマシンにある場合は$.postが成功しました。 (Javaサーブレットが受信します)。JQueryのTomcat Servletへの投稿

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

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

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

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

おかげで、

+1

は、クロスドメインの制限があります。 http://stackoverflow.com/questions/298745/how-do-i-send-a-cross-domain-post-request-via-javascriptあなたが言及するのを忘れてしまった – binarious

答えて

2

jqueryのは、それは良いことですブラウザの同一生成元ポリシーの対象だ意味し、ブラウザ(クライアント側)で動作します。

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

ポリシーをバイパスする2つの方法があります。最初は、リモート・サーバーに要求を保証させることです。もう1つは、ブラウザーの同じ起点ポリシーを回り込むことです。だから、

リモートサーバを管理している場合、またはない管理者は、サーバは単に次のヘッダーを送信する必要がある、AJAXリクエストをforiegnするために、サーバー/ドメインを開くための要求を取る場合:

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

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

リモートサーバを制御することはできません場合は、同一生成元ポリシーを回避するsneakier方法があります。

  1. は、パラメータを使用してローカルURLへのAjaxリクエストを行い、それに合格していそれはサーブレットに沿って、そしてそのプロキシスクリプトはサーブレットが応答するものを返します。

  2. (私はまだ上のあいまいだけど、正直に、しかし、jQueryのAJAXのドキュメントは、それに入る)JSONP

  3. あなたはscript要素のsrcがsame-によって限定されるものではないという事実を活用するスクリプトインジェクション、起源政策。 3の

、私は最初は(いわば)最も安全な、少なくともハック、最も正直であると思うが、JSONPはjqueryのでクロスドメインリクエストを引っ張っするためのシンプルで簡単な方法となっています。

+2

'アクセス制御が許可されたオリジン ' – binarious

+1

ああ!最もハックされていなくて、最も意欲的なものです!恥ずかしさを増す – Anthony

+0

追加していただきありがとうございます。ヘッダーの私の説明が十分に深くないと思うならば、お気軽にコメントしてください。 – Anthony