axios.post發(fā)送請(qǐng)求一直報(bào)錯(cuò)403,一看請(qǐng)求方式變成了option,反正就各種報(bào)錯(cuò)吧,
昨天加班也沒(méi)搞定,今天用postman測(cè)試了一下,postman正常顯示。
心想還好沒(méi)去問(wèn)老大,不然可能就尷尬了。。
然后看到一篇文章
******************************************************************************
上面的結(jié)果導(dǎo)致總是返回404 ,因?yàn)楹笈_(tái)不允許options訪問(wèn)。
后來(lái)查詢(xún)各種資料發(fā)現(xiàn):根源在于,我們發(fā)出去的請(qǐng)求不是?simple request,那么在每次發(fā)送請(qǐng)求之前,都會(huì)發(fā)送一個(gè)options請(qǐng)求,simple request?需要同時(shí)滿(mǎn)足以下條件(規(guī)范可以百度查詢(xún)):
get、post、head 請(qǐng)求類(lèi)型
不要設(shè)置列表之外的header(如: user-agent)
Content-Type 只能是:
application/x-www-from-urlencoded
multipart/from-data
text/plain
***********************************************************************************
又想到昨天用全局配置post方法的data數(shù)據(jù)的qs.stringify
api.interceptors.request.use(function (config) {
? ? if(config.method === 'post'){
? ? ? config.data = qs.stringify(config.data)
? ? }
于是在這里又加了一條
config.headers = {'Content-Type':'application/x-www-form-urlencoded;charset=UTF-8'}
然后就可以了
但是。。。
之前已經(jīng)有這一條了
const api= axios.create();
api.defaults.baseURL = 'http://192.168.1.101:8080/mall/';
api.defaults.timeout = 5000;
api.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
api.defaults.headers.post['X-Requested-With'] = 'XMLHttpRequest'
那之前的這一條為什么不生效呢???
待解答