2011-06-20 18 views
6

De https://app.example.com estoy haciendo la petición siguiente:Fuerza Safari para incluir un encabezado de origen en jQuery solicitud GET

$.get('https://api.example.com', { foo: 'bar' }) 
    .success(getSuccess) 
    .error(getError); 

Funciona bien en Chrome y Firefox, pero no en Safari. Safari no realiza una solicitud de OPCIONES de verificación previa o incluye un encabezado Origin: https://app.example.com para que el servidor no devuelva el encabezado Access-Control-Allow-Origin: https://app.example.com.

¿Hay alguna forma de obligar a Safari a incluir el encabezado Origin o realizar la solicitud de OPCIONES de verificación previa?

Respuesta

1

Puede agregar encabezados a la solicitud HTTP XHR en el evento beforeSend.

Algo así como:

$.ajax({ 
    url: 'https://api.example.com', 
    data: { foo: 'bar' }, 
    beforeSend: function(xhr) { 
    xhr.setRequestHeader("Origin", "https://app.example.com"); 
} 
}) 
.success(getSuccess) 
.error(getError); 
+4

'origen controlado es un encabezado restringido y no se puede ajustar manualmente mediante JavaScript. – abraham

+0

Safari no es compatible con este encabezado, pero restringe la adición de forma manual? – Variant

+0

Por lo que sé, todos los principales navegadores restringen la adición de Origin. Safari admite Origin para solicitudes POST/DELETE (y tal vez otras). Lo ideal es que haya algunas opciones de "habilitar Origen para solicitudes GET = verdaderas". – abraham

Cuestiones relacionadas