Web开发中的GET请求问题及视图模板使用指南
1. GET请求的问题
在Web开发中,HTTP GET和POST请求有着本质的区别。按照规范,GET请求应该用于从服务器检索信息,而POST请求用于请求服务器上的状态更改。然而,许多Web开发者广泛忽略了这一规则。
例如,在线商店中的“添加到购物车”链接,点击该链接通常会生成一个GET请求,从而改变应用程序的状态(向购物车添加商品)。这种情况在过去一直存在,但在2005年春天,Google发布了Google Web Accelerator(GWA)后,问题变得更加明显。GWA是一个客户端代码,它通过预缓存页面来加速用户的浏览。当用户阅读当前页面时,加速器软件会扫描页面上的链接,并在后台读取和缓存相应的页面。这就导致了在用户还在考虑商品选择时,加速器可能会自动点击“添加到购物车”链接,不断向购物车中添加商品。
此外,搜索引擎和其他爬虫也会不断跟踪公共网页上的链接。通常,那些会引发应用程序状态改变的链接(如“添加到购物车”)在用户开始交易之前不会暴露,所以爬虫不会看到或跟踪这些链接。但GWA运行在客户端,使得这些链接突然被暴露出来。
如果应用程序中包含危险链接(如“删除订单”、“解雇员工”或“发射导弹”),就存在这些链接被意外跟踪的风险,从而导致应用程序执行危险操作。
2. 解决GET请求问题的方法
为了有效消除危险链接带来的风险,可以遵循一个简单的规则:绝不允许在没有人为干预的情况下直接跟踪执行危险操作的 <a href="..." 链接。以下是一些具体的实践技术:
- 使用表单和按钮
超级会员免费看
订阅专栏 解锁全文

1944

被折叠的 条评论
为什么被折叠?



