我最近一直在使用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对象)。
任何帮助?