设置请求标头jQuery Ajax
我陷入了一个非常奇怪的问题,我想在我的ajax请求中向服务发送额外的param 授权 ,就像这样
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
但是使用这段代码
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);
它发送的这个没有传递值,它的请求类型也变成了OPTION而不是GET,这里是控制台日志
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
任何人都可以告诉我如何通过它如此授权:bearer t-3e57cc74-3e7a-4fc7-9bbb-f6c83252db01
谢谢
使用beforeSend预请求回调,我们可以实现这一点。
$.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 () { }, });
您可以使用ajaxSetup为所有请求设置它
$.ajaxSetup({ beforeSend: function(xhr) { xhr.setRequestHeader('Authorization', '...'); } });