Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

307
Vistas
CORS: el modo de credenciales es 'incluir'

Sí, sé lo que está pensando: otra pregunta más de CORS, pero esta vez estoy perplejo.

Entonces, para comenzar, el mensaje de error real:

XMLHttpRequest no puede cargar http://localhost/Foo.API/token. El valor del encabezado 'Access-Control-Allow-Origin' en la respuesta no debe ser el comodín '*' cuando el modo de credenciales de la solicitud es 'include' . Por lo tanto, no se permite el acceso al origen 'http://localhost:5000'. El modo de credenciales de las solicitudes iniciadas por XMLHttpRequest está controlado por el atributo withCredentials.

No estoy seguro de lo que significa el modo de credenciales es 'incluir' .

Entonces, cuando realizo la solicitud en cartero, no experimento tal error:

ingrese la descripción de la imagen aquí

Pero cuando accedo a la misma solicitud a través de mi aplicación web angularjs, este error me deja perplejo. Aquí está mi solicitud/respuesta de anualrjs. Como verá, la respuesta es OK 200 , pero sigo recibiendo el error CORS:

Solicitud y respuesta de Fiddler:

La siguiente imagen muestra la solicitud y la respuesta del front-end web a la API

Violinista

Entonces, según todas las otras publicaciones que he leído en línea, parece que estoy haciendo lo correcto, por eso no puedo entender el error. Por último, aquí está el código que uso dentro de angualrjs (fábrica de inicio de sesión):

ingrese la descripción de la imagen aquí

Implementación de CORS en API - Propósitos de referencia:

Método 1 utilizado:

 public static class WebApiConfig { public static void Register(HttpConfiguration config) { EnableCrossSiteRequests(config); } private static void EnableCrossSiteRequests(HttpConfiguration config) { var cors = new EnableCorsAttribute("*", "*", "*") { SupportsCredentials = true }; config.EnableCors(cors); } }

Método 2 utilizado:

 public void Configuration(IAppBuilder app) { HttpConfiguration config = new HttpConfiguration(); ConfigureOAuth(app); WebApiConfig.Register(config); app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll); app.UseWebApi(config); }
about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

El problema se deriva de su código Angular:

Cuando withCredentials se establece en verdadero, intenta enviar credenciales o cookies junto con la solicitud. Como eso significa que otro origen está potencialmente intentando realizar solicitudes autenticadas, el comodín ("*") no está permitido como encabezado "Access-Control-Allow-Origin".

Tendría que responder explícitamente con el origen que realizó la solicitud en el encabezado "Access-Control-Allow-Origin" para que esto funcione.

Recomendaría incluir explícitamente en la lista blanca los orígenes que desea permitir para realizar solicitudes autenticadas, porque simplemente responder con el origen de la solicitud significa que cualquier sitio web determinado puede realizar llamadas autenticadas a su backend si el usuario tiene una sesión válida.

Explico esto en este artículo que escribí hace un tiempo.

Por lo tanto, puede establecer withCredentials en falso o implementar una lista blanca de origen y responder a las solicitudes de CORS con un origen válido siempre que se trate de credenciales.

about 4 years ago · Santiago Trujillo Denunciar

0

Si está utilizando el middleware CORS y desea enviar withCredentials boolean true, puede configurar CORS de esta manera:

 var cors = require('cors'); app.use(cors({credentials: true, origin: 'http://localhost:5000'}));

`

about 4 years ago · Santiago Trujillo Denunciar

0

Personalización de CORS para Angular 5 y Spring Security (solución basada en cookies)

En el lado de Angular, se requiere agregar el indicador de opción withCredentials: true para el transporte de cookies:

 constructor(public http: HttpClient) { } public get(url: string = ''): Observable<any> { return this.http.get(url, { withCredentials: true }); }

En el lado del servidor Java, se requiere agregar CorsConfigurationSource para configurar la política CORS:

 @Configuration @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Bean CorsConfigurationSource corsConfigurationSource() { CorsConfiguration configuration = new CorsConfiguration(); // This Origin header you can see that in Network tab configuration.setAllowedOrigins(Arrays.asList("http:/url_1", "http:/url_2")); configuration.setAllowedMethods(Arrays.asList("GET","POST")); configuration.setAllowedHeaders(Arrays.asList("content-type")); configuration.setAllowCredentials(true); UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", configuration); return source; } @Override protected void configure(HttpSecurity http) throws Exception { http.cors().and()... } }

El método configure(HttpSecurity http) de forma predeterminada utilizará corsConfigurationSource para http.cors()

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda