请求标头字段授权是Access-Control-Allow-Headers不允许的错误
问题描述:
我有一个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
}
})
哪有我解决这个问题?我已经尝试了很多解决方案并阅读了这个。我已阅读下面:
答
的问题显然不是导致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有关于所有选项的更多详细信息。
您的服务器是否响应OPTIONS请求,浏览器会发送该请求来预检请求以查看它是否被允许?我建议你看一下Chrome调试器中的网络标签,看看浏览器正在发送什么以及你的服务器在响应什么。通常,您可以在该信息中更准确地看到问题。 – jfriend00