|
Descrizione del problema Quando una chiamata cross-domain ASP.NET MVC o un servizio scritto ASP.NET Web API, diventa inaccessibile. Metodo di riproduzione - Usa un template per creare il progetto Web API più semplice ASP.NET, debuggalo per assicurarti che funzioni
- Crea un altro progetto con una sola pagina HTML e effettua una chiamata AJAX
- Apri questa pagina nel tuo browser e troverai il seguente errore (405: Metodo non permesso)
Nota: La stessa situazione si verifica in ASP.NET MVC. In alcuni casi, MVC può anche essere utilizzato direttamente per sviluppare servizi, il che presenta vantaggi e svantaggi rispetto a WebAPI. Di seguito è riportato un esempio di un servizio sviluppato utilizzando MVC
Analisi della causa La ragione fondamentale del problema cross-domain è che il browser ha bassi privilegi su entrambe le richieste e di solito consente solo chiamate a risorse nel dominio locale, a meno che il server target non gli dica esplicitamente che le chiamate cross-domain sono permesse. Pertanto, sebbene il problema cross-domain sia causato dal comportamento del browser, la soluzione si trova lato server. Perché non è possibile richiedere a tutti i clienti di ridurre la sicurezza.
soluzione Per entrambi i tipi di progetti ASP.NET MVC e ASP.NET Web API, ho fatto alcune ricerche e ho determinato che il seguente scenario è fattibile. Per ASP.NET MVC, basta aggiungere il seguente contenuto al web.config
Per ASP.NET Web API, oltre alle impostazioni sopra, è necessario aggiungere un design speciale, che consiste nell'aggiungere un metodo OPTIONS per ogni API Controller, ma senza restituire nulla. Opzioni stringa pubblica() { return null; Risposta HTTP 200 con corpo vuoto }
Nota: questa funzione può essere realizzata anche con qualche ricerca, e potrebbe essere meglio progettarla come un filtro.
|