標籤:

jquery ajax怎麼通過header傳遞參數? 不想通過url傳參!

jquery ajax header傳參


送分題!

首先的首先,涉及業務邏輯的輸入是需要通過參數傳遞的,主要有三種方法:path, query, POST/PUT body

path: GET /api/user/123 其中的123通過path傳遞

query: GET /api/search_user?userId=123

body: POST /api/user-signup {username: "john"}

不建議通過header傳參的原因:

1. proxy 和 reverse proxy會drop header

2. 不利於傳輸object

3. HTTP access control (CORS) API 一般會設置Access-Control-Allow-Headers,分分鐘教你做人。

4. 不利於dev和debug

5. Header長度限制

然後,如果你需要傳header,比如Authorization,如下。

jQuery.ajax()

headers (default: {})

Type: PlainObject

An object of additional header key/value pairs to send along with requests using the XMLHttpRequest transport. The header X-Requested-With: XMLHttpRequest is always added, but its default XMLHttpRequest value can be changed here. Values in the headers setting can also be overwritten from within the beforeSend function. (version added: 1.5)

$.ajax({
url: "/path/to/service",
method: "GET | POST | PUT | DELETE",
headers: {
"Authorization": "Bearer &",
"some-other-header": "some value"
}
})
.done(function(data){...})
.fail(function(jqXHR){...})
.always(function(){...})


HTTP Request 的格式

第一行 method path protocol

接下來若干行 header field

空行

接下來是可選的 request body

所以你到底想用哪一部分來傳數據呢?

1. path ,這是最常見的

2. body ,POST 請求裡面很常見

3. header field,例如 cookie,以及 OAuth 的 Authorization 等


樓主的意思應該是ajax請求如何設置額外的頭信息?

如果不是,那 @南冬暖的回答正解

如果是關於ajax請求設置額外的header的話

jQuery.ajax()

官網上搜索headers

基本用法(直接用下樓上的代碼了)

$.ajax({
//請求類型,這裡為POST
type: "POST",
//你要請求的api的URL
url: url ,
//是否使用緩存
cache:false,
//數據類型,這裡我用的是json
dataType: "json",
//必要的時候需要用JSON.stringify() 將JSON對象轉換成字元串
data: JSON.strigify({key:value}), //data: {key:value},
//添加額外的請求頭
headers : {"Access-Control-Allow-Origin":"*"},
//請求成功的回調函數
success: function(data){
//函數參數 "data" 為請求成功服務端返回的數據
},
});


推薦閱讀:

115登錄頁的long polling在chrome裡面為什麼看不到返回結果?
怎樣合理地使用 Ajax ?過度使用 Ajax 會有哪些弊端?
Web 前端工程師需要 AJAX?感覺請求提交都是後端的事情。
XML在數據傳輸哪些方面會比JSON有優勢,在哪些領域更加適合?

TAG:Ajax | jQuery |