javascript - 在nodejs中发出请求时跨域资源共享错误
问题描述
发出 put 请求时出现此错误。
从源“ http://localhost:3000 ”访问“ http://localhost:5000/api/products/undefined ”处的 XMLHttpRequest已被 CORS 策略阻止:Access-Control-Allow-Methods 不允许方法 PUT在预检响应中。
我什至在主服务器文件中包含了 CORS 策略
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*"); // update to match the domain you will make the request from
res.header(
"Access-Control-Allow-Headers",
"Origin, X-Requested-With, Content-Type, Accept, Authorization",
"Access-Control-Allow-Methods","GET, PUT, POST, OPTIONS"
);
next();
});
解决方案
看起来头函数一次应该只接收两个参数:
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
res.header("Access-Control-Allow-Methods", "GET, PUT, POST, OPTIONS");
next();
});
有关如何在 ExpressJS 上启用 CORS 的更多详细信息,请参阅此参考: https ://enable-cors.org/server_expressjs.html
你可以使用一个 npm 包,这个包是一个中间件,安装它只需:
npm install cors
并使用它:
var express = require('express')
var cors = require('cors')
var app = express()
app.use(cors())
app.get('/products/:id', function (req, res, next) {
res.json({msg: 'This is CORS-enabled for all origins!'})
})
app.listen(80, function () {
console.log('CORS-enabled web server listening on port 80')
})
有关如何使用 cors 包的详细信息,请参阅此文档:https ://expressjs.com/en/resources/middleware/cors.html
推荐阅读
- c# - ControlTemplate 使 TextBox 内容消失
- reactjs - 使富文本字段在 React 中工作的问题 - 使用 react-rte 但对建议持开放态度
- html - HTML 无法正确加载
- math - 确定 x/y 分数具有重复的小数扩展
- c - 在密码对 c 编程正确后如何停止我的代码循环
- regex - 正则表达式提取完整路径的文件夹名称下划线后的最后一个字符
- sql - 如何优化访问计数器 SQL 查询?
- amazon-web-services - 我找不到 AWS 服务器 IP
- python - 将一个数据帧的整列设置为另一个数据帧的列的最小值
- r - 如何在r中将英文数字转换为波斯语