最近、JSONPとASP.NET MVCを使用してクロスドメインJavaScriptを行っています。JQuery、XmlHttpRequest、ステータスコード0
特定のコントローラアクションは、POST要求にのみ応答しますが、これは仕様によるものです。
IE8では、(Fiddler2を使用して)応答が正しいことを確認し、JSONP JavaScriptとともにHTTP 200応答を返すことができます。
Firefox、Safari、Chromeでは、適切なHTTP 200コードとJSONPのコンテンツが返されていますが、唯一の違いはJQueryで使用されているXmlHttpRequestオブジェクトがステータスコードを0に設定していることです。 responseTextを空にします。
元々、これはCOR HTTPプリフライト(Httpアクセスコントロール)によるものだと思っていました。これは、カスタムヘッダーまたはtext/plain以外のコンテンツタイプにより、追加のHTTPリクエスト(OPTIONS付き)動詞が送信されるサーバーに送信します。 Fiddler2では、OPTIONSリクエストがHTTP 404で応答されていることがわかります。
WebサーバーはIIS7です(ただし、プロダクションWebサーバーはIIS6ボックスになります)。 IIS7では、標準のOPTIONSVerbHandlerがハンドラにリストされているのを見ることができますが、実際には何もしていないと確信しています(実際OPTIONSVerbHandlerに関するドキュメントはどこにも見つかりません)。
これを解決するために、私はJQueryライブラリを変更してカスタムヘッダーを設定せず、application/jsonの代わりにcontent-typeをtext/plainに変更しました。そしてFirefoxはOPTIONSリクエストをバイパスし、 。
Fiddler2がコンテンツを返す正常なHTTP 200応答が返されていることを示しているにもかかわらず、問題はまだ(XmlHttpRequestオブジェクトに基づいて)空の応答にあります。
助けが必要ですか?