2011-01-20 4 views
1

私は解決しようとしている複雑な解決策があります。jquery wmfサービスへのクロスドメインポストなしのプロキシ

サーバー1にはwcfサービス(.net 4.0)がホストされています。サーバー1はPCIに準拠しています。

サーバ2は、クライアントのWebサイトです。このウェブサイトには、クレジットカードフォームがホストされています。また、フォームの投稿をハイジャックするjqueryプラグインもあります。サーバー2はPCIに準拠していません。クレジットカードの形

データは Soはサーバ2

に投稿することができない、私は私のjQueryプラグインからの私のWCFサービス(JSONアウト、でJSON)を呼び出すようにしようとしています。私はサーバー2でプロキシを使用できません。これは、私のポストデータがそのサーバーに送られることを意味するからです。

したがって、フォームデータは、server2を完全にバイパスしてクライアントマシンから直接サーバー1に移動する必要があります。とWFCサービスにクロスドメインAJAX呼び出しを行うにはどのような方法があります

XMLHttpRequest cannot load http://server1/MySite.Services/PaymentService.svc/SubmitCreditCardPayment . Origin http://server2 is not allowed by Access-Control-Allow-Origin.

私は、しかし、私はまだエラーを取得し、サーバ1にcrossdomain.xmlファイルを使用する方法についていくつかの記事を見ましたjsonとjson out?

これを行うにはjquery ajaxの使用に拘束されません。 jqueryを使用してデータのクロスドメインを送信する別のソリューションがある場合は、それを聞いてみたいと思います。

編集:

私のサービスは次のようになります。

PaymentResponse SubmitCreditCardPayment(CreditCardRequest request); 

要求および応答オブジェクトは、プロパティ(DataContract/DataMember)とだけクラスです。

答えて

0

JSONPを試しましたか?

これは、ソースターゲットに制限のないscriptタグを使用して、クライアントからserver1上のサービスを呼び出す簡単な方法です。あなたのjs envで解釈されたそのjson応答を取得するには、コールバックが必要です(たとえばfoo(data))、このコールバック名をGETパラメータとしてajaxクエリに設定する必要があります。ターゲットとするAjaxサービスは、fooの呼び出しによってjsonの応答を囲みます。 foo({json: things})

編集: あなたはJSON-Pをテストしてみたが、それは確保されていない;:あなたの発言への対応(および使用GET):

あなたは右JSON-Pだが、セキュリティのための非常に良いではありません。しかし、CORSは、アプリケーションに使用できるブラウザの数を減らします(最近のブラウザのみ)。エラーメッセージはCORSエラーメッセージです。 jsでリクエストした場合は、CORSの実装に問題があり、古いブラウザではJSON-Pフォールバックが必要になります。

jQueryの魔法のajax関数を使用しても、悪質なセキュリティで保護されたjson-pまたは不良なCORSを使用するという問題があります。

もう1つの解決策は、server1のサブドメインとしてserver2を使用していますが、クレジットカードでの支払いの場合、あなたのケースではないと思います。

のcrossdomain.xmlファイルのみフラッシュアプリケーションではなく、jsのために存在していますが、もう一度、アプリケーションの使用を許可する人の数を減らし、フラッシュ(あえぎ)で全体のAjaxのプロセスを作ってそれを使用することができます(最近の)フラッシュサポートに基づいています。 OMG私は実際の解決策としてフラッシュについて話しています...

+0

はい、あります。 jsonpは取得リクエストでのみ動作します。つまり、クエリ文字列にクレジットカード情報を渡す必要があります。これは理想的ではありません。ウェブサーバーがそのデータをログに記録し、PCIに違反するためです。 – Josh

+0

@Josh:あなたが正しいです、私は私の応答を編集しました – regilero

関連する問題