Я недавно занимался кросс-доменным javascript, используя JSONP и ASP.NET MVC.JQuery, XmlHttpRequest и код состояния 0
Специальное действие контроллера будет отвечать только на запрос POST, это по дизайну.
В IE8 я вижу (через Fiddler2), что ответ верен, и возвращает ответ HTTP 200 вместе с JSONP javascript.
В Firefox, Safari и Chrome ответ по-прежнему возвращается с соответствующим кодом HTTP 200 и содержимым JSONP, единственное различие заключается в том, что объект XmlHttpRequest, используемый JQuery, устанавливает код состояния в 0, а responseText для пустого.
Первоначально я думал, что это связано с предварительным запуском COR HTTP (Http Access Control), в результате чего пользовательский заголовок или тип контента, отличный от text/plain, приведет к отправке дополнительного HTTP-запроса (с помощью OPTIONS) к серверу. Я могу видеть в Fiddler2, что на запрос OPTIONS отвечает HTTP 404.
Веб-сервер IIS7 (но веб-сервер производства будет ящиком IIS6). В IIS7 я вижу стандартный OPTIONSVerbHandler, указанный в обработчиках, но я не уверен, что это на самом деле что-то делает (на самом деле я даже не могу найти документацию о OPTIONSVerbHandler где-нибудь).
Чтобы обойти это, я модифицировал библиотеку JQuery, чтобы не устанавливать настраиваемый заголовок, и изменить тип содержимого в text/plain вместо application/json, и Firefox, наконец, начинает обходить запрос OPTIONS и просто POST-сообщения ,
Проблема по-прежнему заключается в пустом ответе (в соответствии с объектом XmlHttpRequest), хотя Fiddler2 показывает, что успешный ответ HTTP 200 с возвратом содержимого.
Любая помощь?