2013-07-23 15 views
6

CORS, SOAP web hizmetimizin (HTTPS altında çalışan ve kullanıcı adı/parola doğrulaması vardır) yeni bir sürümü için çalışarak JS'ye bağlanmaya çalışıyorum.HTTPS hizmeti için CORS + SOAP + WCF kullanma

Şu an yerel olarak çalışıyor (etki alanları arası değil) ama farklı bir etki alanı kullanıyor olmasından dolayı WCF Traceviewer'dan aşağıdakileri alıyorum. (IIS7 400 Bozuk İstek)

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

O bile benim mesajı denetçisi uygun CORS başlıkları eklemek için çalışır kısmına alamayacak gibi görünüyor.

Bunu daha önce deneyimleyen veya CORS'in bir HTTPS SOAP hizmeti kapsamında çalışmasını sağlayan var mı?

Verebileceğiniz herhangi bir tavsiyeyi takdir ediyorum.

Alkış, Jamie

+0

Hiç kimsenin bir fikri yok mu? – Jamie

+1

Bu sorunun çözümlerini incelediniz ve denediniz [SO: IIS7'de çapraz kaynaklı kaynak paylaşımını etkinleştirme] (http://stackoverflow.com/questions/12458444/enabling-cross-origin-resource-sharing-on-iis7) –

+0

GET/POST yöntemlerinden hiçbirine, içerik odaklı yönlendirme yöntemleri tarafından açıkça izin verildiğinden emin olun. webDAV'ı propget kullanarak hatırlıyorum ve arama yapın, diğer SOAP'lar hakkında emin değilim ... – dandavis

cevap

1

Aslında bu sadece böyle istek başına yanıtı özel üstbilgi uygulamak yapabilirsiniz.

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

Bunu yapmanın daha fazla yolu vardır. Sadece şeref olabilirsiniz. WCF makalelerinde çapraz etki alanı erişimini sağlıyor musunuz? Wcf ve wcf hizmet sunucularından çapraz etki alanında bir wcf servisi kullanılan bir proje uygulandı. Jsonp'u webhttp ciltleme ile kullanabilirsiniz. örnek cevap burada;

Cross Domain jQuery Ajax Request & WCF REST Service

veya böyle yapılandırmayı uygulayabilir:

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

iyi yolu uygulamak için etkinleştirme/cors enable-cors.org sitesini kontrol edin. Bu bağlantıyı kolayca bulabilirim.

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

En azından json yerine jsonp kullanabilirsiniz. onun özgür ama işlemek için zor.

Ne seçtiğini merak ediyorum.

+0

Mevcut bir hizmet olarak SOAP kullanıyorum. Bu REST veya JSON olsaydı muhtemelen çok daha kolay olurdu. Şimdiye kadar başarıları olan siteye baktım, bu yüzden sorunun güvenlikle ilgili olduğunu düşünüyorum. – Jamie

+0

Tamam, bir myproxy.svc gibi bir proxy hizmeti oluşturmayı denediniz (javascript dosyalarının çalıştığı veya korsanın etkin olduğu site ile aynı site) ve js corsenabledsite.com/myservice/requestToRealService veya myservice/requestToRealService aracılığıyla arama yapabilirsiniz. requestToRealService içinde sunucunuzda servis arayabilirsiniz. –