origin habilitar control chrome allow javascript ajax http http-headers cors

javascript - habilitar - CORS y encabezado de origen?



cors php (2)

El encabezado de origen

Cuando se agrega este encabezado?

Durante la etapa del encabezado, antes de que se envíe el cuerpo del documento (después de open , antes de send ).

¿Se agrega cuando un navegador (que soporta CORS) está haciendo una solicitud? (dominio cruzado o no dominio cruzado?)

Se agrega cuando el origen no coincide con la página desde la que se crea el XMLHttpRequest , pero también puede enviarse en una solicitud del mismo origen.

¿O se agrega automáticamente cuando el navegador "ve" que el origen objetivo de la solicitud es diferente del origen actual ...

Sí.

Sin embargo, el navegador siempre enviará los encabezados de Origen requeridos cuando sea necesario.

Esto es parte de la especificación XMLHttpRequest ; Si está realizando una solicitud de dominio cruzado, en los encabezados de solicitud se envía un encabezado adicional. Este encabezado es, por ejemplo, Origin: http://www.stackoverflow.com y se adjunta mediante un navegador de seguimiento de estándares sin interacción del usuario.

Puede leer más sobre las especificaciones en la sección de Seguridad de MozillaWiki , WHATWG y html5.org . Es implementado por (que yo sepa) Firefox y Google Chrome. No creo que sea parte del W3C todavía. Además , no asuma que el encabezado de origen es verdadero , ya que puede configurarse manualmente mediante controladores modificados u otro software.

Cuando necesitamos invocar una solicitud de Ajax hacemos:

if(typeof XMLHttpRequest !== ''undefined'') xhr = new XMLHttpRequest(); else { var versions = ["Microsoft.XmlHttp", "MSXML2.XmlHttp", "MSXML2.XmlHttp.3.0", "MSXML2.XmlHttp.4.0", "MSXML2.XmlHttp.5.0" ];

Ya sé que utilizando XMLHttpRequest-2 , podemos realizar una solicitud de origen cruzado Y que se agrega el encabezado ORIGEN.

Pregunta:

  • ¿Cuándo se agrega este encabezado?

    • ¿Se agrega cuando un navegador (que soporta CORS) está realizando una solicitud? (dominio cruzado o no dominio cruzado?)
    • O se agrega automáticamente cuando el navegador "ve" que el origen objetivo de la solicitud es diferente del origen actual ...

Quiero decir: ¿qué significa la línea **?

Las solicitudes HTTP de origen cruzado tienen un encabezado de origen. Este encabezado proporciona al servidor el origen de la solicitud. Este encabezado está protegido por el navegador y no se puede cambiar desde el código de la aplicación. En esencia, es el equivalente de la red de la propiedad de origen que se encuentra en los eventos de mensajes utilizados en la mensajería de documentos cruzados. El encabezado de origen difiere del encabezado de referencia anterior [sic] en que el referente es una URL completa que incluye la ruta. Debido a que la ruta puede contener información confidencial, a veces el remitente no es enviado por los navegadores que intentan proteger la privacidad del usuario. Sin embargo, el navegador siempre enviará los encabezados de Origen requeridos cuando sea necesario .


El encabezado de origen se agrega automáticamente (generalmente) cuando realiza una solicitud de dominio cruzado.

Para probarlo, abrí la consola en esta página e hice dos solicitudes diferentes: una para otro dominio y otra para ''/'' y solo la primera se agregó el encabezado de origen.

Por cierto, estoy usando JQuery para eso y realmente te aconsejaría que lo uses también para tener el mismo comportamiento en todos los navegadores.

Para información complementaria sobre el tema, verifique esto:

Lo primero a tener en cuenta es que una solicitud CORS válida siempre contiene un encabezado de origen. Este encabezado de origen lo agrega el navegador y no puede ser controlado por el usuario. El valor de este encabezado es el esquema (por ejemplo, http), el dominio (por ejemplo, bob.com) y el puerto (incluido solo si no es un puerto predeterminado, por ejemplo, 81) a partir del cual se origina la solicitud; por ejemplo: http://api.alice.com .

La presencia del encabezado de origen no significa necesariamente que la solicitud sea una solicitud de origen cruzado. Si bien todas las solicitudes de origen cruzado contendrán un encabezado de origen, algunas solicitudes del mismo origen también pueden tener uno. Por ejemplo, Firefox no incluye un encabezado de origen en las solicitudes del mismo origen. Pero Chrome y Safari incluyen un encabezado de origen en las solicitudes POST / PUT / DELETE del mismo origen (las solicitudes GET del mismo origen no tendrán un encabezado de origen).

Source