Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

534
Views
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); }
over 4 years ago · Santiago Trujillo
3 answers
Answer question

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.

over 4 years ago · Santiago Trujillo Report

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'}));

`

over 4 years ago · Santiago Trujillo Report

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()

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!