2013-07-23 6 views
6

Я пытаюсь заставить CORS работать для новой версии нашего веб-сервиса SOAP (который работает под HTTPS и имеет аутентификацию имени пользователя/пароля), с которым можно подключиться через JS.Использование CORS + SOAP + WCF для службы HTTPS

В настоящее время я работаю нормально (не междоменное), но вскоре, когда он использует другой домен, я получаю следующее из WCF Traceviewer. (400 Bad Request в IIS7)

<ExceptionString>System.Xml.XmlException: The body of the message cannot be read because it is empty.</ExceptionString> 

Кажется, это даже не добраться до той части, где мое сообщение инспектор работает, чтобы добавить соответствующие заголовки CORS.

Кто-нибудь испытал это раньше или сумел заставить CORS работать в рамках службы HTTPS SOAP?

Буду признателен за любые советы, которые вы можете дать.

Приветствия, Джейми

+0

Никто не имеет никаких идей? – Jamie

+1

Вы рассмотрели и попробовали решения из этого [SO: разрешающего совместного использования ресурсов на основе IIS7] (http://stackoverflow.com/questions/12458444/enabling-cross-origin-resource-sharing-on-iis7) –

+0

make убедитесь, что любые методы не GET/POST явно разрешены методами content-orign-allow-methods. я помню webDAV, используя propget, и поиск, не уверен в других SOAP ... – dandavis

ответ

1

На самом деле вы можете сделать это только реализовать пользовательский заголовок ответа на каждый запрос, как это.

Response.AppendHeader("Access-Control-Allow-Origin", "*"); 

Есть много способов сделать это. Вы можете только побороть. Вы просматриваете доступ к перекрестному домену в wcf-статьях? Реализован проект, используемый wcf-сервис из узлов службы wcf и wcf в перекрестном домене. Вы можете использовать jsonp с привязкой webhttp. пример ответа здесь;

Cross Domain jQuery Ajax Request & WCF REST Service

или вы можете реализовать конфигурацию, как это:

<system.webServer> 
<httpProtocol> 
    <customHeaders> 
    <add name="Access-Control-Allow-Origin" value="*" /> 
    </customHeaders> 
</httpProtocol> 
</system.webServer> 

Для лучший способ реализации/включение CORS пожалуйста, проверьте enable-cors.org сайт. Я могу легко найти эту ссылку.

http://enable-cors.org/server_wcf.html

По крайней мере, вы можете использовать JSONP вместо JSON. его бесплатно вы, но с трудом справляетесь.

Интересно, что вы его наставляете.

+0

Я использую SOAP, поскольку это уже существующий сервис. Если бы это был REST или JSON, это было бы намного проще. Я уже не смотрел сайт enable-cors без каких-либо успехов, поэтому я думаю, что проблема связана с безопасностью. – Jamie

+0

Хорошо, можете ли вы попробовать создать прокси-сервис, такой как myproxy.svc (тот же сайт, где исполняются файлы javascript или сайт с поддержкой cors), и вызвать через js corsenabledsite.com/myservice/requestToRealService или myservice/requestToRealService. в requestToRealService вы можете вызвать услугу на своем сервере. –

Смежные вопросы