2012-12-23 11 views
13

Ich bin stecken in einem sehr seltsamen Problem, ich will Authorization in meiner Ajax-Anforderung an einen Dienst einen extra param schicken, wie dieseSet 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 

Aber Mit diesem Code

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); 

es so senden, die nicht den Wert ist vorbei, auch seine Forderung Typ statt GET werden OPTION, hier ist Konsolprotokoll

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 

Kann mir jemand sagen, wie kann ich es wie diese Authorization passieren: Inhaber t-3e57cc74-3e7a-4fc7-9bbb-f6c83252db01

Dank

+0

ich jQuery bin mit 1,8 – MZH

+0

Ich habe es, seine wegen Cross Domain Anruf, Wie kann ich es beheben? – MZH

+0

Schauen Sie sich diesen Thread an: http://stackoverflow.com/questions/3506208/jquery-ajax-cross-domain –

Antwort

20

die beforeSend Mit Vorbitte Rückruf wir dies erreichen können.

$.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

es funktioniert, aber es sollte "Bearer" anstelle von "Bearer" sein – Chiu

13

Und Sie können es für alle Anforderungen mit ajaxSetup gesetzt

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

In meinem Fall musste ich dies für einen X-CSRF-Token-Header festlegen und das löste mein Problem. – Oranges13