2014-05-13 16 views
5

Ho creato un servizio asp.net web api 2 con la sicurezza dell'account individuale. Sto cercando di chiamare formare AngularJs come da questo esempio: http://www.codeproject.com/Articles/742532/Using-Web-API-Individual-User-Account-plus-CORS-En non poteva ottenere che per funzionare in modo aggiunto un po 'di configurazione da qui: How to make CORS Authentication in WebAPI 2?asp.net web api 2 CORS e configurazione autorizzazione autenticazione

e non può superare questo errore: XMLHttpRequest non può caricare' serverRegisterUrl'. L'intestazione 'Access-Control-Allow-Origin' contiene più valori 'clientUrl, *, *', ma solo uno è consentito. Non è quindi consentito l'accesso a "clientUrl".

Non capisco questo messaggio di errore. Penso che la stringa Access-Control-Allow-Origin significhi consentire l'origine clientUrl, tutte le intestazioni, tutti i metodi

Non capisco il problema. Se dovessi specificare solo l'origine da qualche parte, non so dove sia.

L'ho eseguito su Microsoft Azure e utilizzando vs express per l'aggiornamento Web 2013 2 nel caso in cui sia importante.

Ho sfortunatamente dovuto eliminare i miei collegamenti dal messaggio di errore perché ho bisogno di almeno 10 reputazione qui per pubblicare più di 2 collegamenti in una domanda.

+0

nel vostro set di API 'Access-Control-Allow-Origin: *' e dovrebbe funzionare – Sebastian

+1

ho questo nel mio api web.config: –

+0

non funziona –

risposta

0

Sembra che il valore Access-Control-Allow-Origin sia clientUrl, *, * che potrebbe non essere valido. Permette solo un valore. Puoi inserire * significa che sono consentite tutte le origini o quella che hai specificato, ad esempio il tuo host AngularJS.

Avevo messo il mio codice a https://gist.github.com/shaunxu/8414a78cd8074432fc69 Questo potrebbe non essere il modo est ma funziona nella mia applicazione.

+0

Grazie per il tuo codice. A seconda di come posso configurare le cose intorno a me, ottengo: 500 (Errore interno del server) o Nessuna intestazione 'Access-Control-Allow-Origin' presente sulla risorsa richiesta. Ho intenzione di capire come tracciare/registrare il mio servizio in azzurro in quanto non so cosa c'è dietro questi 500 errori e penso di averli generati in alcuni casi prima che iniziassi ad usare anche la tua classe. –

+0

questa è sicuramente una cosa azzurra. il mio codice funziona localmente, 500 errore si verifica in azzurro, dovrò aggiungere la registrazione degli errori. –

9

Ho funzionato, penso che sia venuto giù per la configurazione. web.config: nessun nodo customHeaders "Access-Control-Allow-Origin"

Startup.Auth.cs:
// This must come first to intercept the /Token requests app.UseCors(CorsOptions.AllowAll);

// Enable the application to use bearer tokens to authenticate users app.UseOAuthBearerTokens(OAuthOptions);

WebApiConfig.cs: (non permettendo cors qui) //var cors = new EnableCorsAttribute("*", "*", "*"); //config.EnableCors(cors);

AccountController.cs: attributo metodo GetExternalLogin: [EnableCors(origins: "*", headers: "*", methods: "*")]


penso che sia tutta la mia attuale configurazione CORS.

+0

Questo ha funzionato per me. Fantastico grazie. –

4

Solo aggiungendo alla risposta di @ AlexSmotritsky.

Per usufruire delle UseCors metodo

app.UseCors(CorsOptions.AllowAll); 

ricordarsi di installare il Microsoft.Owin.Pacchetto Cors NuGet e aggiungere

utilizzando Microsoft.Owin.Cors; direttiva.

Problemi correlati