Estoy tratando de realizar una solicitud a la API de iContact que me requirió usar un encabezado personalizado para la autenticación (http://developer.icontact.com/documentation/authenticate-requests). Este es mi código:jQuery AJAX Encabezado personalizado
$.ajax({
type: "GET",
url: "https://app.icontact.com/icp/a/",
contentType: "application/json",
beforeSend: function(jqXHR, settings){
jqXHR.setRequestHeader("Accept", "application/json");
jqXHR.setRequestHeader("Api-Version", iContact_API_version);
jqXHR.setRequestHeader("Api-AppId", iContact_appID);
jqXHR.setRequestHeader("Api-Username", iContact_username);
jqXHR.setRequestHeader("API-Password", iContact_appPassword);}
});
Por alguna razón, la solicitud no se procesa. Sin embargo, cuando realizo la misma solicitud manualmente (usando la consola REST de Chrome) funciona bien. Si elimino los encabezados personalizados (API- *), la solicitud se procesa pero, por supuesto, la autenticación falla y recupero una página HTML normal.
me cambiaron a Firefox y comprueba Solicitud/encabezados de respuesta:
Solicitud:
Host app.icontact.com
User-Agent Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 115
Connection keep-alive
Origin http://184.72.61.244
Access-Control-Request-Me... GET
Access-Control-Request-He... api-appid,api-password,api-username,api-version
Respuesta:
HTTP/1.1 302 Found
Date: Tue, 14 Jun 2011 23:43:56 GMT
Server: Apache/2.2.9 (Debian)
Set-Cookie: intellicontact_phpsess=1c7ca333017b47f46edd893dae584781; path=/; domain=.icontact.com; secure; HttpOnly
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: https://app.icontact.com/icp/login/sentry.php?relurl=https%3A%2F%2Fapp.icontact.com%2Ficp%2Fa%2F&sess=
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 20
Connection: close
Content-Type: text/html; charset=utf-8
Alguna idea de lo que va mal aquí?
Gracias!
Probablemente se esté mirando una solicitud de OPCIONES, que está buscando si el host de destino permite que las solicitudes de varios dominios, [más info] (http://stackoverflow.com/questions/1256593/ jquery-por-qué-estoy-obteniendo-una-opción-solicitud-insted-de-obtener-solicitud).Una solución alternativa es usar JSONP, pero esto no admite encabezados personalizados, [aquí está el por qué] (http://stackoverflow.com/questions/3350778/modify-http-headers-for-a-jsonp-request). Puede terminar usando [cURL] (http://en.wikipedia.org/wiki/CURL) o los "me gusta" si iContact no es compatible con solicitudes ajax de dominio cruzado o JSONP. –
posible duplicado de [Publicación de JSON con campo HTTPHeader personalizado] (http://stackoverflow.com/questions/7100294/json-post-with-customized-httpheader-field) – JAAulde
http://stackoverflow.com/a/14655768/ 1581725 –