2013-07-23 14 views
6

Staram się, aby CORS działał na nową wersję naszej usługi SOAP (działającej pod kontrolą HTTPS i posiadającej autoryzację użytkownika/hasła), do której można podłączyć za pomocą JS.Używanie CORS + SOAP + WCF do usługi HTTPS

W tej chwili otrzymuję go działa dobrze lokalnie (nie między domenami), ale wkrótce, jak to jest za pomocą innej domeny otrzymuję następujące z WC Traceviewer. (400 Bad Request w IIS7)

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

Wydaje się, że nawet nie dostanie się do części, w której moja wiadomość inspektor prowadzi dodać odpowiednie nagłówki Cors.

Czy ktoś wcześniej tego doświadczył, czy udało mu się przekonać CORS do pracy z usługą protokołu HTTPS?

Byłbym wdzięczny za radę, jaką możesz dać.

Cheers, Jamie

+0

Nikt nie ma żadnych pomysłów? – Jamie

+1

Czy dokonałeś przeglądu i wypróbowałeś rozwiązania z tego [SO: zezwalające na dzielenie się zasobami krzyżowymi na IIS7] (http://stackoverflow.com/questions/12458444/enabling-cross-origin-resource-sharing-on-iis7) –

+0

marki pewne metody non GET/POST są jawnie dozwolone przez metody content-orign-allow. pamiętam webDAV za pomocą propget i wyszukiwania, nie jestem pewien innych SOAPs ... – dandavis

Odpowiedz

1

Właściwie można to zrobić tylko wdrożyć niestandardowy nagłówek odpowiedzi na żądanie takiego.

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

Jest więcej sposobów na zrobienie tego. Możesz tylko wybrać. Czy wyglądasz na umożliwienie dostępu między domenami na artykułach wcf? Wdrożono projekt korzystający z usługi wcf z hostów usług wcf i wcf w domenie krzyżowej. Możesz użyć jsonp z wiązaniem webhttp. przykładowa odpowiedź jest tutaj;

Cross Domain jQuery Ajax Request & WCF REST Service

czy można zaimplementować konfigurację tak:

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

Dla najlepszym sposobem wdrożenia/umożliwiające Cors sprawdź enable-cors.org witrynę. mogę łatwo znaleźć ten link.

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

Przynajmniej można użyć jsonp zamiast JSON. jest wolny, ale trudny w obsłudze.

Zastanawiam się, co wybrałeś.

+0

Używam SOAP, ponieważ jest to istniejąca usługa. Jeśli był to REST lub JSON, prawdopodobnie byłby o wiele łatwiejszy. Już sprawdziłem stronę enable-cors bez powodzenia, więc wyobrażam sobie, że chodzi o bezpieczeństwo. – Jamie

+0

OK, czy próbowałeś stworzyć usługę proxy, taką jak myproxy.svc (ta sama witryna, w której uruchamiane są pliki javascript lub strona z włączonym cors) i dzwoń przez js corsenabledsite.com/myservice/requestToRealService lub myservice/requestToRealService. w requestToRealService możesz wywołać usługę na swoim serwerze. –