2012-03-23 10 views
0

フォームをサードパーティのドメインに送信するためのjQueryソリューションを作成しました。サードパーティのURLは、フォームが通常のhtmlで投稿されたときに他のドメインから投稿されたフォームを受け入れます。 jQueryと$ .postでこれを行うことはできません。Post jQuery ajaxは、同じ起点のポリシーを破る通常のhtmlフォームと同じ方法で作成します

例: 送信者URL:HTTP ... DOMAIN1 受信URL:httpsを...ドメイン2

私は通常のHTMLのすべてを使用してdomain1.comにフォームを送信すると正常に動作します。問題は、$ .post()を使用すると、ターゲットドメインがhttpsを使用しているとすぐにjQueryがエラーをスローします。受信者のURLがhttp ... domain2の場合、Ie8は既にエラーをスローします。

私の質問は、jQueryを使用して、通常のhtmlと同じ方法でフォームを送信する方法です。私はie8で動作するように、ソリューションを好むでしょう。また、私はAccess-Control-Allow-Origin:*(ターゲットサーバ上のPHPのヘッダーとして設定)を使用したくないと思います。 jQueryを使用して、通常のHTMLフォームと同じ結果を持つajaxフォームを送信する方法はありますか?

<html lang='sv'> 
<head> 
    <script src='js/jquery-1.7.1.min.js'></script> 
    <script> 
    $(function() 
    { 
     $.post(
      // works in all browsers but ie8 with Access-Control-Allow-Origin: * 
      "http...domain2/?ts="+new Date().getMilliseconds(), 
      // breaks in chrome, didn't test others 
      //"https...domain2/?ts="+new Date().getMilliseconds(), 
      { a:"a", b:"b" }, 
      function(responseText) 
      { 
       alert(responseText); 
      }, 
      "json" 
      //"html" // seems to get same result as when using "json" above 
     ).done(function(){ 
      alert("done!"); 
     }).error(function(event){ 
      alert("error!"); 
     }); 
    }); 
    </script> 
</head> 

<body> 
<!-- working form --> 
<form action="https...domain2/?ts=whatever" method="post"> 
    <textarea name="a">a</textarea> 
    <textarea name="b">b</textarea> 
    <input type="submit"> 
</form> 
</body> 
</html> 

答えて

0

同じ起源ポリシーをBREAKできるかどうかはわかりません。しかし、私たちはまだ動作するように細かいことができます(プロキシを使用し、同じオリジンポリシーを調整することによって)。
同じドメイン上のPHPプロキシを使用してクロスドメインコールを行うことができます(mozillaのようなブラウザは、クロスドメインコールを許可しません)。各reueestをプロキシに転送し、プロキシ経由でクロスドメインコールを行います。サンプルのPHPプロキシご返信用http://developer.yahoo.com/javascript/howto-proxy.html

+0

おかげでより多くの詳細については

enter image description here

は、しかし、PHPは、この場合、オプションではありませんでした。私はなぜajaxがhtml-postと同じ権限を持つことが許されないのか理解できませんでした。いずれにしても、私は単純なhtmlソリューションを使いました。 –

関連する問題