Estoy tratando de enviar archivos a mi servidor con una solicitud de publicación, pero cuando se envía provoca el error:
El campo de encabezado de solicitud Content-Type no está permitido por Access-Control-Allow-Headers.
Así que busqué en Google el error y agregué los encabezados:
$http.post($rootScope.URL, {params: arguments}, {headers: {
"Access-Control-Allow-Origin" : "*",
"Access-Control-Allow-Methods" : "GET,POST,PUT,DELETE,OPTIONS",
"Access-Control-Allow-Headers": "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"
}
Entonces me sale el error:
El campo de encabezado de solicitud Access-Control-Allow-Origin no está permitido por Access-Control-Allow-Headers
Así que busqué en Google y la única pregunta similar que pude encontrar fue proporcionar una media respuesta y luego cerrarla como fuera de tema. ¿Qué encabezados se supone que debo agregar / eliminar?
Respuestas:
El servidor (al que se envía la solicitud POST) debe incluir el
Access-Control-Allow-Headers
encabezado (etc.) en su respuesta . Ponerlos en su solicitud del cliente no tiene ningún efecto.Esto se debe a que depende del servidor especificar que acepta solicitudes de origen cruzado (y que permite el
Content-Type
encabezado de la solicitud, etc.): el cliente no puede decidir por sí mismo que un servidor determinado debe permitir CORS.fuente
Content-Type
?Yo tuve el mismo problema. En la documentación de jQuery encontré:
Entonces, aunque el servidor permite la solicitud de origen cruzado pero no lo permite
Access-Control-Allow-Headers
, arrojará errores. Por defecto, el tipo de contenido angular esapplication/json
, que está intentando enviar una solicitud de OPCIÓN. Intente sobrescribir el encabezado angular predeterminado o permita elAccess-Control-Allow-Headers
final del servidor. Aquí hay una muestra angular:fuente
or allow Access-Control-Allow-Headers in server end
¿cómo?header
para establecer el encabezado de la respuestaSi eso ayuda a alguien, (incluso si esto es un poco pobre, ya que solo debemos permitir esto para fines de desarrollo) aquí hay una solución Java ya que encontré el mismo problema. [Editar] No use el comodín * ya que es una mala solución, úsela
localhost
si realmente necesita que algo funcione localmente.fuente
El servidor (al que se envía la solicitud POST) debe incluir el tipo de contenido encabezado en su respuesta.
Aquí hay una lista de encabezados típicos para incluir, incluido un encabezado personalizado "X_ACCESS_TOKEN":
Eso es lo que su servidor HTTP necesita configurar para el servidor web al que envía sus solicitudes.
También puede pedirle a su servidor que exponga el encabezado "Content-Length".
Reconocerá esto como una solicitud de Intercambio de recursos de origen cruzado (CORS) y debería comprender las implicaciones de hacer esas configuraciones de servidor.
Para más detalles ver:
fuente
Puede activar el encabezado adecuado en PHP con esto:
fuente
Lo siguiente funciona para mí con nodejs:
fuente
Los encabezados que intenta establecer son encabezados de respuesta . Deben ser proporcionados, en la respuesta, por el servidor al que realiza la solicitud.
No tienen lugar establecido en el cliente. No tendría sentido tener un medio para otorgar permisos si pudieran ser otorgados por el sitio que quería permiso en lugar del sitio que poseía los datos.
fuente
Si alguien experimenta este problema con un servidor express, agregue el siguiente middleware
fuente
si prueba algunas solicitudes de JavaScript para ionic2 o angularjs 2, en su Chrome para PC o Mac, asegúrese de instalar el complemento CORS para el navegador Chrome para permitir el origen cruzado.
mayba obtener solicitudes funcionará sin necesidad de eso, pero publicar y poner y eliminar necesitará que instale el complemento cors para que las pruebas funcionen sin problemas, eso definitivamente no es genial, pero no sé cómo lo hacen las personas sin el complemento CORS.
y también asegúrese de que la respuesta json no devuelve 400 por algún estado json
fuente
Este es un problema de fondo. si usa Sails api en el backend, cambie cors.js y agregue su archivo aquí
fuente
En Asp Net Core , para que funcione rápidamente para el desarrollo; en
Startup.cs
,Configure method
agregarfuente
En mi caso, recibo varios parámetros como @HeaderParam en un método de servicio web.
Estos parámetros DEBEN declararse en su filtro CORS de esa manera:
fuente
Request header field Access-Control-Allow-Origin is not allowed by Access-Control-Allow-Headers
error significa que elAccess-Control-Allow-Origin
campo del encabezado HTTP no es manejado o permitido por la respuesta. EliminarAccess-Control-Allow-Origin
campo del encabezado de la solicitud.fuente
Si está utilizando
localhost
y PHP está configurado para resolver el problema:De su uso frontal:
y boom no más problemas de
localhost
!fuente