JQuery Ajax是一種基于JavaScript的網絡編程技術,它能夠無刷新地向服務器發送請求和接收響應。其中,發送請求是通過HTTP協議進行的,而HTTP協議是基于cookie的無狀態協議。因此,如果我們使用JQuery Ajax請求需要鑒權的接口時,就需要在請求中加上cookie。
下面是使用JQuery Ajax發送請求時帶上cookie的示例代碼:
$.ajax({ url: '/api/user', type: 'get', beforeSend: function (xhr) { xhr.setRequestHeader('Authorization', 'Bearer ' + token); }, xhrFields: { withCredentials: true }, crossDomain: true, success: function (res) { console.log(res); } });
其中,beforeSend函數是在發送請求之前執行,可以在其中設置請求頭;xhrFields屬性是設置XMLHttpRequest對象(通常簡稱XHR)的字段,withCredentials屬性是表示是否允許發送cookie。如果我們想讓cookie生效,必須設置這個屬性為true。
另外,我們還需要在后臺接口中設置Access-Control-Allow-Origin和Access-Control-Allow-Credentials header,以允許跨域請求并接收cookie。
app.use(function(req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Credentials', 'true'); next(); }); app.get('/api/user', function(req, res, next) { const cookie = req.cookies[COOKIE_NAME]; if (cookie && checkCookie(cookie)) { res.json({code: 200, msg: 'success', data: userData}); } else { res.json({code: 401, msg: 'Unauthorized'}); } });
總之,使用JQuery Ajax發送請求時需要加上cookie的話,需要在請求頭中設置Authorization和withCredentials屬性,并在后臺接口中設置Access-Control-Allow-Origin和Access-Control-Allow-Credentials header。
下一篇mysql不編譯