【发布时间】:2019-10-04 07:19:53
【问题描述】:
我只是想知道是否有任何方法可以阻止 POSTMAN 发出的 HTTP 请求?就像浏览器在 CORS 的帮助下只允许特定的来源访问资源。提前致谢。
【问题讨论】:
标签: asp.net-core asp.net-web-api xmlhttprequest postman
我只是想知道是否有任何方法可以阻止 POSTMAN 发出的 HTTP 请求?就像浏览器在 CORS 的帮助下只允许特定的来源访问资源。提前致谢。
【问题讨论】:
标签: asp.net-core asp.net-web-api xmlhttprequest postman
没有。
在 CORS 中,阻止请求(或应答)是浏览器的工作,您的服务器不知道请求的“真相”。如果某些高级用户将在浏览器设置/标志中禁用“遵循 CORS 规则” - 您的 CORS 设置将被忽略。
即使您会发现一些 POSTMAN 会“理解”并拒绝工作的“特殊标头” - 还有许多其他“客户端”可以将 http(s) 请求发送到服务器(curl、Fiddler、... )。
【讨论】:
我不知道有什么可以泄露请求是通过 Postman 发出的事实的。
归根结底,Postman 是一个简单的客户端,因此请求通过它或任何其他客户端实际上是无关紧要的。 Postman 的工作是帮助与 API 对话,甚至自动化这个过程。
如果您担心安全性,请先保护您的 API。那么你就不会真正关心你是如何获得请求的,只要它经过身份验证并且实际上允许与你的 API 对话。
【讨论】:
这对于这个问题来说可能已经过时了,但处理这种情况的最简单方法之一是
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”作为响应。
【讨论】: