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

139
Vistas
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 Respuestas
Responde la pregunta

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