¿Qué encabezados HTTP pueden establecerse en JavaScript?

¿El W3C especifica qué encabezados HTTP puede establecer un XMLHttpRequest? De ser así, ¿han publicado un documento que justifique estos requisitos por razones de security?

¿Depende del browser restringir encabezados HTTP según su propio criterio? Si es así, ¿hay un documento o colección de documentos en línea que enumere las peculiaridades de las diferentes implementaciones de XHR o es necesario encontrar esa información en la documentation para cada implementación?

One Solution collect form web for “¿Qué encabezados HTTP pueden establecerse en JavaScript?”

W3C tiene esta especificación sobre los encabezados permitidos por setRequestHeader

Finalice estos pasos si el encabezado es una coincidencia insensible a mayúsculas / minúsculas para uno de los siguientes encabezados:

  • Aceptar-Charset
  • Aceptar-Codificar
  • Access-Control-Request-Headers
  • Access-Control-Request-Method
  • Conexión
  • Largancia de contenido
  • Galleta
  • Cookie2
  • Content-Transfer-Encoding
  • Fecha
  • Esperar
  • Anfitrión
  • Mantener viva
  • Origen
  • Referer
  • TE
  • Remolque
  • Transferencia-Codificación
  • Mejorar
  • Agente de usuario
  • Vía

… o si el inicio del encabezado no coincide entre mayúsculas y minúsculas para Proxy- o Sec- (incluso cuando el encabezado es solo Proxy- o Sec-).

Los encabezados anteriores están controlados por el agente de usuario para permitirle controlar esos aspectos del transporte. Esto garantiza la integridad de los datos en cierta medida. Los nombres de encabezado que comienzan con Sec- no se pueden configurar para permitir que se acuñen nuevos encabezados que se garantiza que no provienen de XMLHttpRequest.

También puedes considerar:

Si el encabezado no está en la list de encabezados de request de autor, agregue el encabezado con su valor asociado a la list y finalice estos pasos.

Acerca de la implementación de browseres, encontré esta buena testing: https://dvcs.w3.org/hg/webapps/diff/5814514eeba4/tests/XMLHttpRequest/setrequestheader-header-forbidden.htm que no puede usar para encontrar las diferencias actuales.

Por ejemplo, IE tiene esta definición de security en los encabezados:

IE : Consulte RFC2616, Sección 14 : Definiciones de campo de encabezado para get una list general de encabezados estándar. El server es en última instancia responsable de respetar los encabezados de la request. Con mucho, el encabezado de request más común es Content-Type, que es requerido por algunos web services XML.

  • Texto de respuesta vacío de XMLHttpRequest
  • Actualización del progreso del lado del server en la aplicación Rails
  • Cómo comprobar si el envío de XMLHttpRequest () es compatible con el file
  • Raspado web en una extensión de Google Chrome (JavaScript + API de Chrome)
  • Razones para no usar XMLHttpRequest nativo: ¿por qué es obligatorio $ .ajax?
  • Carga de files AJAX con XMLHttpRequest
  • Javascript XHR envía multipart / form-data
  • XMLHttpRequest in for loop
  • Javascript tiene muchos buenos JS marco (como Node.js AngularJS Vue.js React.js) es el mejor lenguaje de script.