哪些请求参数可以用来判断请求是否来自Postman vs NodeJS服务器?



我正在运行两个相同的API请求到第三方API—一个在postman中,另一个在NodeJS中。API在Postman和NodeJS中使用不同的set-cookie头响应。

我试过:

  • 从Postman headers选项卡复制头到我的nodejs请求头。
  • 从Postman控制台复制头文件到我的nodejs请求头文件。
  • 复制Postman自动生成的axios代码
  • node-fetch代替axios
  • 在Postman中打开/关闭各种设置。

每次,Postman中的API请求都用不同于NodeJS的set-cookie头响应。邮差请求收到了正确的会话令牌,而NodeJS请求没有收到。

  1. API服务器可以以某种方式区分这两个环境,但是如何区分呢?
  2. 是邮差运行在一个无头浏览器上,以便它可以"服务器检查浏览器运行时?
  3. 邮差是一个真正的"卷发"吗?而nodejs请求不是?
  4. 鉴于请求头和正文在两个请求中都是相同的,哪些变量可以用来区分邮递员请求和nodejs请求?

我将亲自回答这个问题,给那些来这里寻找答案的人。显然,Postman使用了一些神奇的配置来从浏览器发出请求,同时绕过CORS问题。

他们称之为"邮差代理"。看起来它可能是关闭了CORS的无头浏览器前的本地代理(或类似的东西)。

你可以在这里阅读:https://blog.postman.com/introducing-the-postman-agent-send-api-requests-from-your-browser-without-limits/

在我的例子中,问题不是由请求之间的差异引起的。这是由处理响应的方式造成的。Postman显示了在最初的302响应中收到的cookie,然后跟随重定向。NodeJS请求跟随重定向,但在最终响应中没有显示初始的'set-cookie'头。只要我在nodejs中设置redirect: 'manual',我就可以从初始302响应中看到正确的标头。

相关内容

  • 没有找到相关文章

最新更新