首页 > 解决方案 > AJAX POST 与 GET

问题描述

我想知道如果我在 AJAX 调用中使用 GET 或 POST 是否真的有什么不同。

我正在使用 AJAX 删除具有指定 ID 的项目。不知何故,POST 似乎是一个更合适的选择。但是对于 Razor Pages,AJAX POST 需要几个步骤来解决跨站点请求伪造措施

如果我只是在这里 GET 或 POST 有什么不同吗?或者如果我不这样做,我是否会遇到任何反模式?

标签: c#ajaxasp.net-corepostrazor-pages

解决方案


有很多角度可以回答您的问题“如果我在这里 GET 或 POST 有什么不同吗?” 简而言之,是的,它有所作为。

GET 和 POST 都容易受到 CSRF 攻击。通过使用 GET,您正在创建更广泛的攻击面。例如,电子邮件中的 IMG 标签可以在毫无戒心的用户上运行您的 DELETE api。使用 POST 使其变得不那么简单。与使用 GET 相比,在不支持防伪的情况下使用 post 会更好。理想情况下,您将 POST 与防伪令牌一起使用。

其他考虑因素包括:

  • 缓存如何处理这个请求
  • 遵守 REST 原则(假设你打算有一个“REST”ful/like 设计)
  • 通常假设 get 不直接操纵服务器端状态
  • 从理论上讲,一个 URL 标识了一个资源的位置,如果你用 get 删除了那个资源,下次调用 get 会发生什么?
  • 一个 get 不会受到 CORS 的保护,因为它被假定为不修改状态,浏览器将执行 GET 并且不会将响应返回到有问题的站点。使用 POST,浏览器将使用 OPTIONS 动词运行 CORS 预检检查,以确保在您的服务器接收带有动词 POST 的请求之前,服务器返回的 CORS 策略允许该请求。

推荐阅读