【问题标题】:Is there any way to block HTTP requests made by Postman in .NET Core?有什么方法可以阻止 Postman 在 .NET Core 中发出的 HTTP 请求?
【发布时间】:2019-10-04 07:19:53
【问题描述】:

我只是想知道是否有任何方法可以阻止 POSTMAN 发出的 HTTP 请求?就像浏览器在 CORS 的帮助下只允许特定的来源访问资源。提前致谢。

【问题讨论】:

    标签: asp.net-core asp.net-web-api xmlhttprequest postman


    【解决方案1】:

    没有。

    在 CORS 中,阻止请求(或应答)是浏览器的工作,您的服务器不知道请求的“真相”。如果某些高级用户将在浏览器设置/标志中禁用“遵循 CORS 规则” - 您的 CORS 设置将被忽略。

    即使您会发现一些 POSTMAN 会“理解”并拒绝工作的“特殊标头” - 还有许多其他“客户端”可以将 http(s) 请求发送到服务器(curl、Fiddler、... )。

    【讨论】:

    • 感谢@Dmitry 的解释。
    【解决方案2】:

    我不知道有什么可以泄露请求是通过 Postman 发出的事实的。

    归根结底,Postman 是一个简单的客户端,因此请求通过它或任何其他客户端实际上是无关紧要的。 Postman 的工作是帮助与 API 对话,甚至自动化这个过程。

    如果您担心安全性,请先保护您的 API。那么你就不会真正关心你是如何获得请求的,只要它经过身份验证并且实际上允许与你的 API 对话。

    【讨论】:

      【解决方案3】:

      这对于这个问题来说可能已经过时了,但处理这种情况的最简单方法之一是

      app.Use(async (context, next) =>
              {
                  if (context.Request.Headers["Referer"].ToString() != "http://localhost:4200/")
                  {
                      byte[] data = Encoding.ASCII.GetBytes("Not Recognized Request");
                      await context.Response.Body.WriteAsync(data);
                      return;
                  }
                  await next();
              });
      

      这对 .Net 核心很有用,必须在启动 --> 配置部分中设置。 通过这种方法,您将 API 限制为“Http://localhost:4200”,这将是您要限制的“Referer”。 所以因为邮递员没有“Referer”,所以它会得到“Not Recognized request”作为响应。

      【讨论】:

      • 是什么阻止我将该标头添加到我在 Postman 中的请求中?
      猜你喜欢
      • 2018-01-11
      • 2023-02-03
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      • 2021-02-08
      • 1970-01-01
      • 2019-09-18
      • 1970-01-01
      相关资源
      最近更新 更多