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=123body: POST /api/user-signup {username: "john"}不建議通過header傳參的原因:
1. proxy 和 reverse proxy會drop header
2. 不利於傳輸object3. HTTP access control (CORS) API 一般會設置Access-Control-Allow-Headers,分分鐘教你做人。4. 不利於dev和debug5. Header長度限制然後,如果你需要傳header,比如Authorization,如下。
jQuery.ajax()
headers (default: {})Type: PlainObjectAn 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有優勢,在哪些領域更加適合?