2017-11-18 204 views
1

我有一个VueJS应用程序和一个ExpressJS服务器端应用程序。在我的服务器我有以下:请求标头字段授权是Access-Control-Allow-Headers不允许的错误

var allowCrossDomain = function(req, res, next) { 
    res.header('Access-Control-Allow-Origin', req.headers.origin); 
    res.setHeader("Access-Control-Allow-Credentials", "true"); 
    res.setHeader("Access-Control-Allow-Methods", "GET,HEAD,OPTIONS,POST,PUT"); 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization"); 
    next(); 
} 
app.use(allowCrossDomain); 

不过,我不断收到以下错误:

Request header field Authorization is not allowed by Access-Control-Allow-Headers in preflight response.

我送我的要求是这样的:

import axios from 'axios' 

export default axios.create({ 
    baseURL: 'https://example.com', 
    timeout: 5000, 
    headers: { 
    'Authorization': 'Bearer ' + accessToken 
    } 
}) 

哪有我解决这个问题?我已经尝试了很多解决方案并阅读了这个。我已阅读下面:

+0

您的服务器是否响应OPTIONS请求,浏览器会发送该请求来预检请求以查看它是否被允许?我建议你看一下Chrome调试器中的网络标签,看看浏览器正在发送什么以及你的服务器在响应什么。通常,您可以在该信息中更准确地看到问题。 – jfriend00

回答

1

的问题显然不是导致Access-Control-Allow-Headers头代码即可获得用于发送OPTIONS回复 - 特别是针对的回复。

为了确保预检OPTIONS得到正确处理,可以考虑安装故宫cors包:

npm install cors 

然后做这样的事情:

var express = require('express') 
    , cors = require('cors') 
    , app = express(); 
app.options('*', cors()); // preflight OPTIONS; put before other routes 

将处理CORS预检OPTIONS请求和其他CORS无需您在应用程序代码中从头开始手动编写您自己的处理。

https://www.npmjs.com/package/cors#configuration-option有关于所有选项的更多详细信息。

相关问题