javascript - 无法使用 Express.js 实现 CORS

标签 javascript node.js cors

我正在从 localhost:3000 上运行的客户端发出 PATCH 请求,代码如下:

axios.patch(
  "http://localhost:3090/v1/users/etc/etc/etc", {
    name,
    url,
  }, {
    headers: {
      authorization: AUTH_TOKEN()
    }
  }
)

到配置如下的服务器:

var app = express();
var cors = require('cors');
//etc

//var whitelist = [
//  'http://localhost:3000',
//  'localhost:3000'
//];
//passing this to cors() doesn't help
//var globalCorsOptions = {
//  origin: function(origin, callback) {
//    callback(null, whitelist.indexOf(origin) !== -1);
//  }
//};

app.use(morgan('combined'));
app.use(cors());
app.options('*', cors());
app.use(bodyParser.json({type:'*/*'}));

app.use('/v1', router);

var port = process.env.PORT || 3090;
var ip = process.env.IP || 'localhost';
var server = http.createServer(app);

server.listen(port, ip);

但是请求只是挂起。我可以很好地执行 POST/GET,但不能执行 DELETE/PATCH。预检进行得很好,但接下来的实际请求只是无限期地“停滞”。以下是每个请求的 header :

enter image description here enter image description here

很抱歉问这个非常标准的问题,但我已经尝试了一切。

编辑: 将以下内容添加到路由器(仍然不起作用):

var router = express.Router();

router.use(function(req, res, next) {
  res.header("Access-Control-Allow-Headers", "PATCH,DELETE,OPTIONS,GET,POST");
  next();
});

实际错误: enter image description here

最佳答案

在服务器上,您必须将以下 header 添加到响应中:

headers.Add("Access-Control-Allow-Headers", "PATCH,DELETE,GET,POST");

实际上是您想要允许的所有 HTTP 方法。

关于javascript - 无法使用 Express.js 实现 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37774369/

相关文章:

javascript - Reactjs 获取身份验证和访问 token ,无法解析响应

reactjs - Create React App 中 httpsCallable firebase 上的 CORS 错误

javascript - 如何使用 Driver Wait Until Text is in selenium

javascript - nodejs elementtree npm xml解析与合并

javascript - 缺少架构错误 : Schema hasn't been registered for model “Marker”

node.js - 检查 NodeJS 中延迟的异步代码

javascript - 如何使用 javascript 显示 Firebase 存储中的图像?

javascript - javascript中的类型转换问题

javascript - 视频.js : Unable to view fullscreen video

node.js - 限制 Node JS Express 中的 api 访问