Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Set Request Header jQuery Ajax

I'm stuck in a very strange problem, I want to send an extra param Authorization in my ajax request to a service, just like this

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 

But Using this 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); 

It send like this which is not passing the value, also its request type become OPTION instead of GET, here is console log

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 

Can anyone tell me how can I pass it like this Authorization: bearer t-3e57cc74-3e7a-4fc7-9bbb-f6c83252db01

Thanks

like image 619
MZH Avatar asked Dec 23 '12 12:12

MZH


People also ask

What is request header in AJAX?

The headers are additional key-value pairs send along with ajax request using the XMLHttpRequest object. An asynchronous HTTP request to the server by using The ajax() function and by including the header it describes to the server what kind of response it accept.

How can I pass multiple headers in AJAX call?

ajax({ url: 'foo/bar', headers: [{ 'my-first-header': 'blub'}, { 'my-second-header': 'peng'}] }); This creates a strange empty header field, containing a json array.

Is AJAX still used?

With interactive websites and modern web standards, Ajax is gradually being replaced by functions within JavaScript frameworks and the official Fetch API Standard.


2 Answers

Using the beforeSend pre-request callback we can achieve this.

$.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 () { }, }); 
like image 197
Ramesh Avatar answered Sep 28 '22 04:09

Ramesh


And you can set it for all requests with ajaxSetup

$.ajaxSetup({     beforeSend: function(xhr) {         xhr.setRequestHeader('Authorization', '...');     } }); 
like image 22
Nicolas Janel Avatar answered Sep 28 '22 03:09

Nicolas Janel