最近嘗試vue, 使用 axios 發(fā)送 post 請求 :
axios Example 里面是這樣的:
// Performing a POST request
axios.post('/user', {
firstName: 'Fred',
lastName: 'Flintstone'
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
// Send a POST request
axios({
method: 'post',
url: '/user/12345',
data: {
firstName: 'Fred',
lastName: 'Flintstone'
}
});
上面的官方代碼我怎么嘗試都行不通, 不管怎樣, 發(fā)送的都不是 post
, 而是 options
。
我在網(wǎng)上查看了一些解決方法,比如說使用兼容度并不怎么好的 URLSearchParams
和 引入 qs
, 或者直接 JSON.stringify
, 但是發(fā)送過去的數(shù)據(jù)就是純字符串了,后端收到還需要轉(zhuǎn)一下才能用,為什么不按照常規(guī)的方式來發(fā)送數(shù)據(jù),就像 jQuery
的 ajax
方法一樣。
那么問題來了, 我真的有必要為了發(fā)送 post 請求而使用兼容并不好的 URLSearchParams
或者為此引入一個 qs
庫么?axios
到底有哪里好? 為什么官方的例子卻行不通?
...。
這里的options
應(yīng)該是跨域(復(fù)雜跨域請求)的預(yù)先請求,用來確定有沒有跨域權(quán)限。
你拿jquery.ajax
發(fā)跨域請求,也會有一個options
請求。
和vue
,axios
沒有關(guān)系。
和vue
,axios
沒有關(guān)系。
和vue
,axios
沒有關(guān)系。
qs轉(zhuǎn)參數(shù)是因為axios默認(rèn)支持application/json
請求頭與json數(shù)據(jù)格式。
使用其他請求頭和form-data的數(shù)據(jù)格式需要手動設(shè)置請求頭和qs轉(zhuǎn)換格式。
qs是用來做序列化的,JSON.stringify也是做序列化處理的,但你要知道他們序列化的結(jié)果是不一樣的。
var a = {b:1,c:2}
qs-->"b=1&c=2"(這個叫query字符串嗎)
JSON.stringify: {"b":1,"c":2}(json字符串)
options請求并不任何ajax庫(axios 或者 jQuery ajax)發(fā)送的,而是瀏覽器自動發(fā)送的。這是一種跨域請求的機制,大多數(shù)瀏覽器都有這個機制。如果你在nodejs里發(fā)送POST請求,就不會帶有options請求。
贊同 @toBeTheLight 說的,有些人答的都是什么鬼,不是沒答到點子上就是前端文盲式的亂答,連"Vue請求之前都會發(fā)送一次options請求"都出來了。
建議答題前先提高下跨域的姿勢水平。
具體可查閱
HTTP訪問控制
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團,成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。