node.js - 在预检响应中允许在 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)
})
在前端我使用:
- axios:v0.17.1
- Vue:v2.5.3
- 网络包:3.6.0
在后端,我使用 expressjs/nodejs 并安装 express cors 来处理这种情况。
- 节点 9.8.0
- 表达 4.15.2
- 科尔斯 2.8.4
我需要弄清楚如何在预检响应中允许 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))
但无论如何它都不起作用...... =(
解决方案
尝试:
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');
推荐阅读
- angular - Angular 上的哨兵在本地主机上工作(服务)但不在服务器上(构建)
- sql - 在 SQL*PLUS 中创建新配置文件时出错
- python - Dask DataFrame 过滤器和重新分区提供了一些空分区
- google-cloud-platform - 如何在 Firestore 的子集合名称中使用通配符?
- android - 为什么 setImageResource 需要不同的数组来打印图像以及图像中的剩余部分如何工作?
- sitecore - Sitecore 如何获取 Droplist 或 Droplink 选定项目的 Id 和 Value?
- curl - 继续后,命令行 cURL 工具不会在失败时转储响应标头
- r - 基于多列计算数据框中的出现次数 - R
- python - 如何在 Python 中过滤具有特定条件的 netCDF 变量?
- java - 尝试在 Amazon EC2 集群上配置主从时,JMeter 抛出“java.net.ConnectException: Connection timed out (Connection timed out)”