2012-12-23 10 views
13

Sono bloccato in un tempo molto strano problema, voglio inviare una param più Autorizzazione nella mia richiesta Ajax a un servizio, proprio come questoSet Request Header jQuery Ajax

Request headers 
Authorization: bearer t-3e57cc74-3e7a-4fc7-9bbb-f6c83252db01 
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11 
Accept: */* 
Accept-Encoding: gzip,deflate,sdch 
Accept-Language: en-US,en;q=0.8 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 
Cookie: JSESSIONID=908D73C50F09E75C9A0D674C4CB33D2F; ROUTEID=.1; __unam=3c3246b-13bc693352d-aa1535c-1 

ma utilizzando questo codice

headerParams = {'Authorization':'bearer t-7614f875-8423-4f20-a674-d7cf3096290e'}; 
    obj = { 
     type: 'get', 
     url: 'https://api.sandbox.slcedu.org/api/rest/v1/students/test1', 
     headers: headerParams, 
    data: [], 
    dataType: 'json', 
    processData: false, 
    success: function(data) { 
     console.log('success'); 
     console.log(data); 
    } 
}; 

    jQuery.ajax(obj); 

Si invia come questo, che non sta passando il valore, OPZIONE anche il suo tipo di richiesta diventano invece di GET, qui è log della console

Accept: */* 
Accept-Encoding gzip, deflate 
Accept-Language en-US,en;q=0.5 
Access-Control-Request-Headers authorization 
Access-Control-Request-Method GET 
Connection keep-alive 
Host api.sandbox.slcedu.org 
Origin http://localhost 
User-Agent Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0 

Qualcuno può dirmi come posso passare in questo modo Autorizzazione: portatore t-3e57cc74-3e7a-4fc7-9bbb-f6c83252db01

Grazie

+0

sto usando jQuery 1.8 – MZH

+0

ho controllato, la sua causa di tra domini di chiamata, come posso risolvere il problema? – MZH

+0

Dai un'occhiata a questa discussione: http://stackoverflow.com/questions/3506208/jquery-ajax-cross-domain –

risposta

20

Uso del beforeSend pre-richiesta di richiamata possiamo raggiungere questo obiettivo.

$.ajax({ 
url: 'https://api.sandbox.slcedu.org/api/rest/v1/students/test1', 
type: 'GET', 
beforeSend: function (xhr) { 
    xhr.setRequestHeader('Authorization', 'bearer t-7614f875-8423-4f20-a674-d7cf3096290e'); 
}, 
data: {}, 
success: function() { }, 
error: function() { }, 
}); 
+0

funziona, ma dovrebbe essere "Bearer" invece di "portatore" – Chiu

13

Ed è possibile impostare per tutte le richieste con ajaxSetup

$.ajaxSetup({ 
    beforeSend: function(xhr) { 
     xhr.setRequestHeader('Authorization', '...'); 
    } 
}); 
+1

Nel mio caso ho dovuto impostare questo per un header X-CSRF-Token e questo ha risolto il mio problema. – Oranges13