|
Descripción del problema Cuando una llamada multidominio ASP.NET MVC o un servicio escrito ASP.NET Web API, se vuelve inaccesible. Método de reproducción - Usa una plantilla para crear un proyecto de API web ASP.NET sencillo, depura para asegurarte de que funciona
- Crea otro proyecto con solo una página HTML y haz una llamada AJAX
- Abre esta página en tu navegador y encontrarás el siguiente error (405: Método No Permitido)
Nota: La misma situación ocurre en ASP.NET MVC. En algunos casos, MVC también puede usarse directamente para desarrollar servicios, lo que tiene sus propias ventajas y desventajas en comparación con WebAPI. A continuación se muestra un ejemplo de un servicio desarrollado usando MVC
Análisis de la causa La razón fundamental del problema entre dominios es que el navegador tiene pocos privilegios en ambas solicitudes y normalmente solo permite llamadas a recursos en el dominio local, a menos que el servidor objetivo le indique explícitamente que se permiten llamadas entre dominios. Por lo tanto, aunque el problema cruzado de dominio se debe al comportamiento del navegador, la solución está en el lado del servidor. Porque no es posible exigir a todos los clientes que reduzcan la seguridad.
solución Para ASP.NET tipos de proyectos de MVC y ASP.NET Web API, investigué y determiné que el siguiente escenario es factible. Para ASP.NET MVC, solo necesitas añadir el siguiente contenido a web.config
Para ASP.NET APIs web, además de los ajustes anteriores, es necesario añadir un diseño especial, que consiste en añadir un método OPTIONS para cada controlador de API, pero sin devolver nada. Opciones de cadenas públicas () { return null; Respuesta HTTP 200 con cuerpo vacío }
Nota: Esta función también se puede hacer con algo de investigación, y puede ser mejor diseñarla como un filtro.
|