使用laravel做API,passport認證,vue做client。在postman中能夠正常獲取數(shù)據(jù),在vue中報錯Access-Control-Allow-Origin
下面是我的代碼
laravel AuthServiceProvider.php
public function boot()
{
$this->registerPolicies();
// 配置passport路由
Passport::routes(null,['prefix'=>'api/oauth','middleware'=>'acc.h']);
}
laravel acc.h
中間件
public function handle($request, Closure $next)
{
header("Access-Control-Allow-Origin:*");
return $next($request);
}
php artisan route:list
部分截圖
vue js script
axios({
method: 'post',
url: '/oauth/token', // main.js中已經(jīng)設置了全局的baseURL
data: {
client_id: '2',
client_secret: 'kCvv28qy25rIw5IYvAwpIHNQvBMnH6FElrzxqvqP',
username: 'user1@api.test',
password: '111111',
grant_type: 'password'
}
})
.then(response => {
console.log(response.data)
})
在postman中測試截圖
在chrome中測試vue
的截圖
附帶身份憑證的請求與通配符 對于附帶身份憑證的請求,服務器不得設置 Access-Control-Allow-Origin 的值為“*”。
這是因為請求的首部中攜帶了 Cookie 信息,如果 Access-Control-Allow-Origin
的值為“*”,請求將會失敗。而將 Access-Control-Allow-Origin 的值設置為
http://foo.example,則請求將成功執(zhí)行。
來自mdn
所以把*改成你的請求域名http://localhost:8080
如果還不行,
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: *
這些字段也都設置一下
使用各種方法,搗鼓了兩天,最后使用jquery
的POST
與axios
進行對比,才發(fā)現(xiàn)原來默認情況下,axios
將JavaScript對象序列化為JSON
。
看文檔很重要!!axios
只是粗略的看了下前面的選項配置,后面部分忽略了,才導致在這個問題上卡了很長的時間。
廢話少說了,繼續(xù)!
要發(fā)送數(shù)據(jù)到服務器必須把json格式化為字符串。參見axios
的Using application/x-www-form-urlencoded format
首先,服務器上的Access-Control-Allow-Origin
還是需要的
然后就是使用axios
的推薦解決方法,安裝qs
npm install qs --save-dev
引入qs
import qs from 'qs'
使用qs.stringify(data)
對要發(fā)送的數(shù)據(jù)進行格式化
axios(
{
data: qs.stringify(
{
client_id: '2',
...
}
)
...
}
)
另外,很感謝樓上兩位碼友的幫忙??!
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學院和江蘇省首批服務外包人才培訓基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務機構(gòu),發(fā)展為教育服務業(yè)的綜合性企業(yè)集團,成為集合面授教學培訓、網(wǎng)
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。