CORS与POSTMAN

p4rjhz4m  于 2023-08-05  发布在  Postman
关注(0)|答案(6)|浏览(166)

这个问题已经被问了好几次了,但我还是有些不明白:
当我读到关于
无“Access-Control-Allow-Origin”标头
问题,它说应该在请求的服务器上设置一个设置,以便允许跨域:add_header 'Access-Control-Allow-Origin' '*';的。
但是,请告诉我为什么当问** Postman **(这是一个客户端),它的工作就像一个魅力,我有一个从请求的服务器响应?
谢谢你的好意

mdfafbf1

mdfafbf11#

CORS(跨域资源共享)和SOP(同源策略)是服务器端配置,客户端决定是否执行
与客户相关

  • 大多数**浏览器 * 都强制执行 * 它,以防止与CSRF攻击相关的问题。
  • 大多数**开发工具 * 并不关心它。
qyyhg6bp

qyyhg6bp2#

正如@Musa评论的那样,似乎原因是:
Postman不关心SOP,它是一个开发工具而不是浏览器
顺便说一下,这里有一个chrome extension,以便使它在您的浏览器上工作(这是一个用于chrome,但您可以找到FF或Safari)。
如果您想了解更多关于跨域以及为什么它适用于扩展,请查看here

vmpqdwk3

vmpqdwk33#

如果您使用网站并填写表格提交信息(例如您的社会安全号码),您希望确保信息被发送到您认为要发送的网站。因此,浏览器被构建为在默认情况下说,“不要向正在访问的域以外的域发送信息”。
最终,这变得过于限制,但默认的想法仍然存在于浏览器中。不要让网页将信息发送到不同的域。但这都是浏览器检查。Chrome和firefox等浏览器都内置了这样的代码:“在发送此请求之前,我们将检查目的地是否与正在访问的页面匹配。”
Postman(或cmd行上的CURL)没有这些内置检查。您手动与网站交互,因此您可以完全控制您发送的内容。

2uluyalo

2uluyalo4#

虽然这里所有的答案都很好地解释了cors是什么,但对你的问题的直接回答是因为 Postman 和浏览器的以下差异。
浏览器:发送OPTIONS调用以检查服务器类型,并在向API端点发送任何新请求之前获取标头。检查Access-Control-Allow-Origin。考虑到这一点,Access-Control-Allow-Origin头只指定允许哪些所有CROSS ORIGINS,尽管默认情况下浏览器只允许相同的起源。
Postman :直接发送GETPOSTPUTDELETE等。请求,而不检查服务器的类型,并通过对服务器的OPTIONS调用来获取标头Access-Control-Allow-Origin

hwamh0ep

hwamh0ep5#

通常,Postman用于调试和开发阶段。但如果你想阻止它,甚至从 Postman 尝试这个。

const referrer_domain = "[enter-the-domain-name-of-the-referrer]"
    //check for the referrer domain
    app.all('/*', function(req, res, next) {
      if(req.headers.referer.indexOf(referrer_domain) == -1){
        res.send('Invalid Request')
      }

      next();
    });

字符串

3npbholx

3npbholx6#

使用浏览器/chrome postman插件来检查CORS/SOP,就像网站一样。使用桌面应用程序来避免这些控件。

相关问题