node.js - 使用 cURL 测试 CORS

标签 node.js rest curl cors restify

<分区>

我一直在一个 lil 应用程序中实现 CORS,我使用 node-restify 对其进行测试,结果证明在浏览器中,行为符合预期,这意味着,在禁用 CORS 的不同来源中,它不起作用,如果启用了 CORS,它就会起作用。

然而,棘手的部分是使用 CURL,它总是有效!我一直在关注这个问题: How can you debug a CORS request with cURL?

我这样做:

curl -H 'Origin: http://example.com' http://cors.somewhere.com

并使用node-restify示例进行调试

var restify = require('restify');

var srv = restify.createServer();
//srv.use(restify.CORS()); // I enable and disable by uncomment line

function foo(req, res, next) {
        res.send("bananas");
        next();
}

srv.put('/foo', foo);
srv.get('/foo', foo);
srv.del('/foo', foo);
srv.post('/foo', foo);

srv.listen(process.env.PORT || 8080);

我错过了什么?

谢谢!

最佳答案

听起来你在问是否有办法完全阻止 curl 发出请求。这是不可能的。 curl 始终可以向服务器发出请求,无论是否使用 CORS。

但是,curl 也可用于模拟浏览器并验证您的服务器将如何响应 CORS 请求。通过在 curl 请求上使用 --verbose 标志,您可以看到 HTTP 请求和响应 header ,并验证 CORS header 是否按预期工作。这就是这个问题所涵盖的内容:How can you debug a CORS request with cURL?

如果启用了 CORS,您应该会在响应中看到一个 Access-Control-Allow-Origin header 。如果 CORS 被禁用,您应该不会在响应中看到任何 Access-Control-* header 。

关于node.js - 使用 cURL 测试 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20721747/

相关文章:

javascript - 如何根据路由更改快速静态路径?

javascript - 当 Curl 命令成功时,fetch OPTIONS 返回 HTTP 401

rest - 释放资源的POST方法-不支持的媒体类型

PHP:在多个请求中保持与 API 的 HTTPS 连接打开

curl - Youtube Data API 中的 "Your Access Token"是什么以及如何获取它?

javascript - 如何检查数据库是否需要身份验证

javascript - 在 JavaScript 和 Node.js 中向 String 类添加函数会对性能产生什么影响?

javascript - 在套接字消息上调用函数 (socket.io/node.js)

angular - 如何在 Angular 中的 HTTP post 请求中传递 url 中的查询参数

php - cURL 在链中使用多个代理