0

JSONP 対応の Web サービスからデータを取得するように HTML および JavaScript ファイルをセットアップしました。私の問題は、サービスが実行されているディレクトリに html および .js ファイルを展開すると正常に実行されることですが、別のホストから html および .js ファイルを実行しようとすると、要求が実行されないことです。 Web サービスと Java スクリプトでサーバー 500 エラーが発生します。

Chrome の開発者ツールを使用して xmlhttprequest 呼び出しを確認していますが、これが 500 エラーが発生していることを知っている唯一の理由です。

私はすでにかなりの調査を行っており、応答タイプをjsonに設定し、usehttpgetをtrueに設定してスクリプトメソッドタグを設定する必要があることがわかりました。これら2つのことを行い、セットアップを試みました別の投稿で言及されているように、プロジェクトのclientaccesspolicy.xml。すべて役に立たない。

コードのディレクトリに html ファイルと javascript ファイルを配置し、IDE を介して Web サービスを実行すると、その html のインスタンスを使用して呼び出すことができるため、これは Web サービスまたは IIS 側の構成の問題であると確信しています。 Web サービスと私は私の応答を正常に取得します。しかし、html と javascript が実行中のコードの作業ディレクトリにない場合、サーバー エラー 500 が発生します。

これはどのように解決できますか?

EDIT 500エラーはリクエストサイズに基づいているという投稿も見つけたので、 < jsonSerialization maxJsonLength="5000000" / > を web.config に追加して助けになりませんでした。

4

1 に答える 1

0

IIS の構成についてはよくわかりませんが、JSONP を使用してクロスドメインの問題を回避しようとしている場合、XMLHttpRequest は表示されません。JSONP が機能する方法は、呼び出そうとしている URL を含むスクリプト タグを挿入することです。

var tag = document.createElement("script")
tag.src = "http://someurl.example.com?args=42&callback=wrapperFunction"
document.body.appendChild(tag)

次に、サーバーはコールバック クエリ文字列引数を使用して、次のように応答を関数呼び出しにラップします。

wrapperFunction({some: 'response', arg: 42});

これが機能する理由は、script-tags がクロスドメイン ポリシーに従う必要がないためです。このようにしていない場合は、JSONP を使用しておらず、クロスドメイン ルールに従う必要があります。

これが本当に IIS 構成の問題である場合は、申し訳ありません。XMLHttpRequest が JSONP と一緒に言及されているのを見て、「それは間違っている!」と思いました。参考になれば幸いです。それ以外の場合は無視してください:-)

于 2011-08-01T22:49:29.863 に答える