我最近一直在使用JSONP和ASP.NET MVC做一些跨域JavaScript。JQuery,XmlHttpRequest和狀態代碼0
特定的控制器動作將只響應POST請求,這是設計。
在IE8,我可以看到(通過Fiddler2),該響應是正確的,並返回一個HTTP 200響應,與JSONP JavaScript的沿。
在Firefox,Safari和Chrome中,響應仍在返回,並帶有相應的HTTP 200代碼和JSONP內容,唯一的區別是JQuery使用的XmlHttpRequest對象將狀態代碼設置爲0, responseText爲空。
最初,我以爲這是由於COR HTTP預檢(Http Access Control)導致的,其中自定義標題或除text/plain之外的其他內容類型會導致發送額外的HTTP請求(帶有OPTIONS)謂詞到服務器。我可以在Fiddler2中看到OPTIONS請求正在使用HTTP 404響應。
Web服務器是IIS7(但生產Web服務器將是IIS6框)。在IIS7中,我可以看到處理程序中列出的標準OPTIONSVerbHandler,但我不確定這實際上是在做什麼(事實上,我什至不能在任何地方找到關於OPTIONSVerbHandler的任何文檔)。
爲了解決這個問題,我修改了JQuery庫,以便不設置自定義標題,並將content-type改爲text/plain而不是application/json,並且Firefox最終開始繞開OPTIONS請求,並且只是簡單的POST 。
即使Fiddler2顯示有成功的HTTP 200響應,並返回內容,問題依然存在於空響應中(根據XmlHttpRequest對象)。
任何幫助?