2013-07-23 14 views
6

Sto cercando di far funzionare CORS per una nuova versione del nostro servizio Web SOAP (che funziona con HTTPS e ha l'autenticazione username/password) che può essere collegato a tramite JS.Utilizzo di CORS + SOAP + WCF per un servizio HTTPS

Al momento sto funzionando correttamente localmente (non nel dominio incrociato) ma appena si utilizza un dominio diverso ottengo quanto segue dal WCF Traceviewer. (400 Richiesta in IIS7)

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

Sembra non è nemmeno arrivare al punto in cui il mio messaggio ispettore corre aggiungere le intestazioni CORS appropriate.

Qualcuno ha riscontrato questo problema o è riuscito a far funzionare CORS con un servizio SOAP HTTPS?

Apprezzerei qualsiasi consiglio tu possa dare.

Cheers, Jamie

+0

Nessuno ha qualche idea? – Jamie

+1

Avete esaminato e provato soluzioni da questo [SO: abilitazione della condivisione di risorse tra origini su IIS7] (http://stackoverflow.com/questions/12458444/enabling-cross-origin-resource-sharing-on-iis7) –

+0

make certi metodi non GET/POST sono esplicitamente consentiti dai metodi content-orign-allow-method. Ricordo webDAV usando propget, e ricerca, non sono sicuro di altri SOAP ... – dandavis

risposta

1

In realtà si può fare questo implementare solo l'intestazione di risposta personalizzato per ogni richiesta come questo.

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

Ci sono altri modi per farlo. Puoi solo scegliere è. Sembri l'accesso cross-domain abilitante per gli articoli wcf? Implementato un progetto usato il servizio wcf da host wcf e wcf su cross domain. È possibile utilizzare jsonp con l'associazione webhttp. la risposta di esempio è qui;

Cross Domain jQuery Ajax Request & WCF REST Service

o è possibile implementare la configurazione in questo modo:

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

Per modo migliore per attuare/cors permettendo si prega di consultare il sito enable-cors.org. posso trovare facilmente quel link.

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

almeno si può usare al posto di jsonp JSON. è gratis ma difficile da gestire.

Mi chiedo che cosa lo scegliete.

+0

Sto usando SOAP dato che è un servizio esistente. Se questo fosse REST o JSON, probabilmente sarebbe molto più semplice. Ho già visto il sito di enable-cors senza successo, quindi immagino che il problema riguardi la sicurezza. – Jamie

+0

OK, puoi provare a creare un servizio proxy come un myproxy.svc (stesso sito dove eseguire i file javascript o cors enabled) e chiamare tramite js corsenabledsite.com/myservice/requestToRealService o myservice/requestToRealService. in requestToRealService puoi chiamare il servizio sul tuo server. –