首页 > 解决方案 > 在预检响应中允许在 Access-Control-Allow-Header 中提交的请求标头

问题描述

我尝试 axios 调用外部域: https ://viacep.com.br/ws/20021040/json/ (获取调用以返回有关邮政编码的任何信息)

axios.get('https://viacep.com.br/ws/20021040/json')
              .then((response) => {
                alert(JSON.stringify(response))
              })
              .catch((error) => {
                alert(error)
              })

在前端我使用:

在后端,我使用 expressjs/nodejs 并安装 express cors 来处理这种情况。

我需要弄清楚如何在预检响应中允许 Access-Control_allow-Headers 中的 Request 标头字段授权对其进行正常工作。

我正在我的本地主机上开发:8021

授权是带有我的身份验证(JWT)凭据的令牌。

在下图中,任何测试都有注释。

在此处输入图像描述

此致。

我的最后一个测试是:

var corsOptions = {
    origin: true,
    allowedHeaders: ['Content-Type', 'authorization', 'Content-Length', 'X-Requested-With', 'Accept'],
    exposedHeaders: ['authorization'],
    methods: ['GET', 'PUT', 'POST', 'DELETE', 'OPTIONS'],
    // optionsSuccessStatus: 204, // some legacy browsers (IE11, various SmartTVs) choke on 204
    preflightContinue: false
}
app.use(cors(corsOptions))

但无论如何它都不起作用...... =(

标签: node.jsexpressheadercorsaxios

解决方案


尝试:

res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept')
res.header('Access-Control-Allow-Methods', 'GET, PUT, POST, DELETE, PATCH, OPTIONS');

推荐阅读