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

138
Views
Access-Control-Allow-Methods no parece funcionar

Tengo una pequeña aplicación de API web en un servidor web, con un método GET que devuelve 3 registros y un método POST que acepta un objeto y luego le asigna una ID y devuelve el mismo objeto.

Estoy haciendo llamadas ajax desde una aplicación web local y probando mi implementación de CORS. Casi todo hasta ahora, está funcionando bien. Si no especifico un Access-Control-Allow-Origin (solo establecido en * por ahora), mis llamadas no están permitidas (lo que espero), pero también intenté especificar Access-Control-Allow-Methods y no lo hace Parece que mi entrada restringe la realización de llamadas específicas.

Por ejemplo, esto es lo que contiene mi web.config:

 <httpProtocol> <customHeaders> <clear /> <add name="Access-Control-Allow-Origin" value="*" /> <add name="Access-Control-Allow-Headers" value="Content-Type, Authorization, Accept, X-Requested-With " /> <add name="Access-Control-Allow-Methods" value="OPTIONS, GET" /> </customHeaders> </httpProtocol>

Solo tengo OPTIONS y GET en la lista, pero todavía puedo hacer solicitudes POST. Del mismo modo, si lo configuro como "OPTIONS, POST" , aún puedo realizar solicitudes GET.

EDITAR

Según la respuesta de @geekonaut a continuación, pude ver esta función como esperaba. Intenté probar una solicitud PUT , en lugar de GET o POST , pero luego recibí un error que indicaba que la solicitud OPTIONS (preflight) no estaba permitida. Primero necesitaba agregar una sección en mi archivo Global.asax.cs para aceptar ese método, luego, si alternaba agregar/eliminar PUT en el valor de Access-Control-Allow-Methods de mi web.config, vi que solo permitiría eso método si estaba en la lista.

 protected void Application_OnBeginRequest() { if (HttpContext.Current.Request.HttpMethod == "OPTIONS") { HttpContext.Current.Response.StatusCode = 200; HttpContext.Current.Response.End(); } }
about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

CORS no evita una solicitud POST simple (o incluso comprobada) basada en su método.

Access-Control-Allow-Methods solo será efectivo para solicitudes que no podrían haberse realizado con un formulario de origen cruzado simple, por ejemplo.

Eso significa: GET y POST pueden omitir Access-Control-Allow-Methods como se describe en la especificación :

Las solicitudes simples de origen cruzado generadas fuera de esta especificación (como los envíos de formularios de origen cruzado usando GET o POST o las solicitudes GET de origen cruzado resultantes de elementos de script) generalmente incluyen credenciales de usuario, por lo que los recursos que se ajustan a esta especificación siempre deben estar preparados para esperar solicitudes simples. Solicitudes de origen cruzado con credenciales.

Debido a esto, los recursos para los cuales las solicitudes simples tienen un significado distinto a la recuperación deben protegerse de la falsificación de solicitudes entre sitios (CSRF) al requerir la inclusión de un token indescifrable en el contenido proporcionado explícitamente de la solicitud.

(énfasis mío)

about 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!