2017-07-26 375 views
1

我試圖發送axios使用vue.js獲取請求,當沒有需要發送頭文件時它工作得很好。但是,當需要發送授權jwt時,出現CORS錯誤:「對預檢請求的響應未通過訪問控制檢查:否請求的資源上存在'Access-Control-Allow-Origin'標頭。我不知道爲什麼會出現這個問題,因爲響應中有Access-Control-Allow-Origin:'*'頭。我的代碼如下:發送axios獲得授權頭的請求

axios.get(url, { 
    headers: { 
    'Authorization': 'Bearer TOKEN' 
    } 
}) 
.then(function (response) { 
    console.log(response.data) 
}) 

最奇怪的是,當我使用querystring.stringify或JSON.stringify的頭,我沒有得到錯誤403(禁止),但只是一個錯誤401 - 未授權。我嘗試了變量和令牌本身,它不起作用。

我試圖發送一個帖子請求,以獲得所需數據的Web令牌 - 用戶名密碼,它的工作。我能夠獲得令牌。

我在這兩天做了一大堆研究,發現了不同類型的請求結構,並配置了我嘗試過的所有這些,但沒有一個是有效的。有沒有辦法來檢查請求是否與頭一起發送?還有其他問題嗎?如果有人可以幫助,我將不勝感激。謝謝。

+0

您是否嘗試過「Access-Control-Allow-Origin:\ *」(單引號圍繞\ *去掉)而不是「Access-Control-Allow-Origin:'\ *'」? – yixiang

+0

你也應該檢查你是否啓用了「withCredentials」,你可以在[axios doc](https://github.com/mzabriskie/axios)找到這個選項。此值允許在跨站點請求中發送授權標頭,還應確保您的Web服務器發回「Access-Control-Allow-Credentials:true」。 – yixiang

回答

0

我想你應該將此代碼添加到bootstrap.js(或在愛可信定義):

window.axios = require('axios'); // I think its already added 

window.axios.defaults.headers.common = { 
    'X-Requested-With': 'XMLHttpRequest' 
}; 

你沒有提到,但我猜你用laravel,或其他的框架,什麼是保護從csrf攻擊,這就是爲什麼你需要添加生成的令牌到你的ajax請求頭。