0

これを、機能しない最も単純なコードに分解しました。文字列をパラメーターとして受け取り、それをエコーバックする簡単なエコー テストを Web サービスで作成しました。ここでこのメソッドにアクセスするために取り組んできたJavaScriptコードを書きました:

http://jsfiddle.net/stephenbayer/CaHqY/9/

エラーが発生する理由と、返される唯一のメッセージが javascript からのエラー文字列「エラー」である理由を本当に知る必要があります。これを修正して機能させるにはどうすればよいですか。

これは、WCF を介して標準の SOAP を使用して実行されている Web サービスであり、javascript を介してアクセスを要求するクライアントがありました。私にはクレイジーに聞こえましたが、それほど難しいとは思いませんでした。これらのクロスドメイン呼び出しを機能させることに関する明確な情報がまったく見つかりません。

4

5 に答える 5

2

Same Origin Policy が原因で、通常の AJAX 経由で Cross-Domain Call を実行することはできません。そのためにはJSONP -Call を実行する必要があります。

CORSを使用することもできますが、クロス サイト スクリプティングに対して脆弱になる可能性があるため、注意が必要です。

于 2012-07-05T14:21:57.560 に答える
1

最新のブラウザは、ユーザーを XSS 攻撃から保護するためにクロスドメイン リクエストを防止します。

別のドメインからのデータを処理するには、次の 4 つのソリューションのいずれかが必要です。

  • xml サーバー側の変更されたヘッダー
  • jsonpリクエストとレスポンス
  • ブラウザが両方のドメインが同じであると認識するためのプロキシ
  • ブラウザでの保護の緩和 (すべてのブラウザで可能というわけではありません)

最初の 2 つの解決策では、XML サーバーを変更する必要があることに注意してください。

于 2012-07-05T14:24:19.533 に答える
1

http://james.padolsey.com/javascript/cross-domain-requests-with-jquery

幸運を

于 2012-07-05T14:24:20.227 に答える
1

他の人は正しいです。JSON の代わりに JSONP を使用する必要があります。

しかし、代替手段があります:

他のドメインで ajax を直接使用する代わりに、独自のドメインで使用し、たとえば php を使用して、サーバーに新しい Web サービスを作成します。

次に、php ws で外部 Web サービスを呼び出すことができ、それが機能します。を使用しfile_get_contents()ます。

公開サーバーを使用してアドレスコードを取得するために使用します。

$remote_data = @file_get_contents('http://republicavirtual.com.br/web_cep.php?formato=json&cep='.urlencode($_REQUEST['cep']));

echo $remote_data;
于 2012-07-05T14:49:40.850 に答える
0

お使いのブラウザは、同一オリジン ポリシーによりリクエストを停止しています。javascript がロードされたドメインに対してのみ xhr (つまり ajax) を作成できます。

于 2012-07-05T14:21:55.697 に答える