2013-07-23 106 views
6

我正試圖讓CORS爲我們的SOAP Web服務(它運行在HTTPS下並具有用戶名/密碼認證)的新版本工作,它可以通過JS連接到它。使用CORS + SOAP + WCF進行HTTPS服務

目前我得到它在本地工作正常(不跨域),但它使用不同的域名後,我從WCF Traceviewer得到以下內容。 (在IIS7 400錯誤的請求)

<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

確保content-orign-allow-methods明確允許任何非GET/POST方法。我記得webDAV使用propget和搜索,不知道其他SOAP ... – dandavis

回答

1

其實你可以這樣做只是實現每個這樣的請求的響應自定義標題。

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

還有更多的方法可以做到這一點。你只能挑剔。你看看wcf文章的啓用跨域訪問嗎?在跨域使用來自wcf和wcf服務主機的wcf服務實施項目。你可以用webhttp綁定來使用jsonp。範例答案在這裏;

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

至少你可以改用JSON的JSONP。它釋放你,但難以處理。

我想知道你是否喜歡它。

+0

我使用SOAP,因爲它是現有的服務。如果這是REST或JSON,它可能會更容易。我已經看到了enable-cors網站沒有成功,所以我想這個問題是關於安全性。 – Jamie

+0

好的,你可以嘗試創建一個代理服務,如myproxy.svc(相同的網站在哪裏運行javascript文件或啓用網站),並通過js corsenabledsite.com/myservice/requestToRealService或myservice/requestToRealService進行調用。在requestToRealService中,您可以在您的服務器上調用服務。 –