2017-05-29 64 views
1

我有一個React應用程序試圖向我的Express服務器發出一個axios請求,以在Mongo數據庫中查找用戶。之前,我在Rails上構建了後端,併爲CORS創建了一個gem,在Express側嘗試配置CORS後,似乎找不到解決方案。我希望能夠在標題(即用戶名)中傳入自定義字段,以便我可以使用該字段來查詢我的數據庫。請求標頭字段<field-name>不允許在預檢響應中使用Access-Control-Allow-Headers

錯誤,我得到的瀏覽器:

XMLHttpRequest cannot load http://localhost:3000/api/users/test. 
Request header field username is not allowed by Access-Control-Allow-Headers 
in preflight response. 

我Express服務器具有以下CORS設置和我的陣營Axios公司代碼試圖做出與傳遞到頭部對象設置了一個param服務器發送一個請求,但仍然在預先回應錯誤。

app.use(function(req, res, next) { 
    res.setHeader('Access-Control-Allow-Origin', '*'); 
    res.setHeader('Access-Control-Allow-Credentials', 'true'); 
    res.setHeader('Access-Control-Allow-Methods', 'GET,HEAD,OPTIONS,POST,PUT,DELETE'); 
    res.setHeader("Access-Control-Allow-Headers", 
    "Access-Control-Allow-Headers, 
    Origin, 
    Accept, 
    X-Requested-With, 
    Content-Type, 
    Access-Control-Request-Method, 
    Access-Control-Request-Headers, 
    Authorization") 
    res.setHeader('Cache-Control', 'no-cache'); 
    next(); 
}); 

export const loadAccount = (username) => { 
    return(dispatch) => { 
    axios 
    .get(`${url}/users/test`, { 
     headers: {username: username} 
    }) 
    .then(resp => { 
     dispatch({ 
     type: 'LOAD_ACCOUNT', 
     account: resp.data 
     }) 
    }) 
    .catch(errors => { 
     console.log(errors) 
    }) 
    } 
} 
+0

請使用https://stackoverflow.com/posts/44250594/edit編輯/更新你的問題,並粘貼在你的瀏覽器devtools控制檯中看到的確切的錯誤消息 – sideshowbarker

回答

1

我看來,像你必須在你的Access-Control-Allow-Headers子句添加username作爲一個有效的頭,即:

res.setHeader("Access-Control-Allow-Headers", 
    "Access-Control-Allow-Headers, 
    Origin, 
    Accept, 
    X-Requested-With, 
    Content-Type, 
    Access-Control-Request-Method, 
    Access-Control-Request-Headers, 
    Authorization, 
    username") 
res.setHeader('Cache-Control', 'no-cache'); 
next(); 
+0

這是做的伎倆!我很想知道,在我的項目變得足夠大的情況下,我需要將許多自定義頭文件傳遞給Headers子句,那麼該子句可能會變大。是否有解決方法或一個可以在子句中聲明以捕獲任何/所有自定義標題的一竅不通? – jamesvphan

+0

你應該只能使用'*'或完全刪除標頭,我相信默認是允許任何東西,但我不是100%確定的 – ruedamanuel

相關問題