origin missing habilitar control chrome allow asp.net firefox asp.net-web-api cors windows-authentication

asp.net - missing - cors php



Web API 2.1 Autenticación de Windows CORS Firefox (2)

Actualmente estoy resolviendo este problema y la solución de habilitar la autenticación anónima fue algo que realmente no me gustó. Mientras luchaba un poco encontré la combinación correcta descrita en esta respuesta . Todavía no estoy 100% contento, quiero evitar el código en el asax global, pero a través de la configuración web no tuve éxito.

Espero que esto pueda ayudar.

Aquí está el escenario:

Creé un proyecto de API web y un proyecto de mvc, así:

http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api

Instalé el soporte de CORS a través de Nuget y agregué el EnableCorsAttribute

Ejecuté el proyecto y todo funcionó como se esperaba (GET, PUT y POST) en Chrome, IE y FireFox.

Luego habilité la Autenticación de Windows en el proyecto de API web (sí, realmente necesito la autenticación de victoria en el proyecto de API). Para que esto funcione, agregué xhrFields arg a mi llamada a jquery.ajax:

$.ajax({ type: method, url: serviceUrl, data: JSON.stringify(foo), contentType: ''application/json; charset=UTF-8'', xhrFields: { withCredentials: true } }).done(function (data) { $(''#value1'').text(data); }).error(function (jqXHR, textStatus, errorThrown) { $(''#value1'').text(jqXHR.responseText || textStatus); });

Además, configuré la propiedad EnableCorsAttribute.SupportsCredentials = true

Probé todo. Chrome e IE funcionaron, Firefox no. Firefox recibe un 401 en respuesta a su solicitud de verificación previa (OPCIONES).

Parece que FireFox no está intentando autenticarse con el servicio.

¿Ha encontrado alguien una solución a este problema?


Descubrí una solución de dos partes.

El problema es que cuando Firefox emite una solicitud de OPCIÓN y se deniega con un 401, ya no intenta volver a autenticarse. Esto me llevó por un camino para eludir la autenticación en todas las solicitudes de OPCIÓN. No pude encontrar mucha información sobre el tema, pero encontré esto:

401 respuesta para solicitud CORS en IIS con autenticación de Windows habilitada

Basado en eso, configuré la Autenticación anónima establecida en Habilitada en la configuración del proyecto de la API (todavía tenía la Autenticación de Windows configurada en Habilitada ).

Después de ejecutar los proyectos (mvc y api), se me solicitaron las credenciales al emitir una solicitud CORS. Después de proporcionar mis credenciales, pude hacer GET / POST / PUTS con Firefox con éxito.

Para eliminar la aparición de credenciales en Firefox, recibí un consejo de Brock Allen que me llevó por el camino de habilitar la autenticación NTLM. Encontré una publicación aquí que ofrece instrucciones sobre cómo cambiar la configuración adecuada.

Después de agregar '' http://localhost '' a la configuración network.negotiate-auth.trusted-uris , ahora puedo emitir solicitudes CORS contra todos los verbos usando Firefox sin pedir credenciales.