Ответ 1
Этот парень спас мой день.
http://blogs.microsoft.co.il/blogs/idof/archive/2011/07.aspx
Я собираюсь разместить некоторые из его заметок здесь, на случай, если однажды веб-страница умрет. (Я ненавижу находить ссылки "Ваш ответ верен ЗДЕСЬ", а затем ссылка мертва.)
<behaviors>
<endpointBehaviors>
<behavior name="webSupport">
<webHttp />
<CorsSupport />
</behavior>
</endpointBehaviors>
</behaviors>
<extensions>
<behaviorExtensions>
<add name="CorsSupport" type="WebHttpCors.CorsSupportBehaviorElement, WebHttpCors, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</behaviorExtensions>
</extensions>
<services>
<service name="Service.JSonService">
<endpoint address="http://localhost:8080" behaviorConfiguration="webSupport' binding="webHttpBinding" contract="Service.IJSonService" />
</service>
</services>
Теперь вам нужно найти его загружаемую библиотеку под названием "WebHttpCors.dll".
Но там (выше) достаточно, чтобы помочь вам Google/Bing ваш путь к решению.
Часть, которая подталкивала меня к циклу (в моем сценарии), заключается в том, что IE работал, но Firefox не работал.
Моя исходная страница была:
http://localhost:53692/test/WCFCallTestViaJQ14.htm
Так что мой сервис по адресу:
http://localhost:8002/MyWCFService/MyWCFMethodByWebGet?state=NC&city=Raleigh
Итак, у меня был локальный трафик & lt; & lt; - >> localhost.
**** Но порты были разные. (53692 и 8002) ****
IE был в порядке с этим. Firefox был не в порядке с этим.
Затем вы должны помнить, что каждый браузер обрабатывает свои запросы .Send() по-своему (то есть внутри JQUERY).
Все это имеет смысл сейчас.
//JavaScript snipplet from JQuery library
if (window.XMLHttpRequest) {
returnObject = new XMLHttpRequest();
} else if (window.ActiveXObject) {
returnObject = new ActiveXObject("Microsoft.XMLHTTP");
} else {
msg = "Your browser does not support AJAX!";
}
Вот некоторые ключевые слова, фразы, которые я гуглил/разглагольствовал, что, наконец, привело меня куда-то.
Result: [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.statusText]" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: http://localhost:53692/test/WCFCallTestViaJQ14.htm :: HandleJQueryError :: line 326" data: no]
XMLHttpRequest Send "NS_ERROR_FAILURE"
JQuery Ajax WCF Self Hosted CORS JSON
ТЕПЕРЬ, ВАМ НУЖНО ПРОЧИТАТЬ ЕГО БЛОГОВЫЕ БЛОГИ, ЧТОБЫ ПОНИМАТЬ, ЧТО ДЕЛАЕТ КОД:
Например, он говорит:
Заголовок 'Access-Control-Allow-Origin' со значением '*'
Это может или не может быть то, что вы хотите. Возможно, вы захотите лучше контролировать это значение (заголовки) и другие (методы и источники).
Среда разработки это одно. (Используйте все *, что вы хотите).
Производство - это что-то другое, вы можете настроить эти * значения на что-то более различающее. Короче говоря, вам нужно понять, что на самом деле делает для вас CORS с точки зрения безопасности, а не просто добавить поведение, которое позволяет все.
allowed-origins: '*'
allowed-headers: '*'
allowed-methods: '*'