【发布时间】:2011-01-22 17:32:14
【问题描述】:
我被告知永远不要使用 GET 请求进行写操作。并且搜索引擎和其他机器人会跟随并激活它们。假设所有写入操作都需要登录,将获取请求作为链接会有问题吗?
【问题讨论】:
标签: html search-engine bots
我被告知永远不要使用 GET 请求进行写操作。并且搜索引擎和其他机器人会跟随并激活它们。假设所有写入操作都需要登录,将获取请求作为链接会有问题吗?
【问题讨论】:
标签: html search-engine bots
登录不会保护用户免受浏览器、浏览器插件(包括链接预览器)、“网络加速器”甚至代理服务器进行链接预取的危险。
【讨论】:
不仅机器人,普通浏览器对 GET 请求的行为也不同。当您在使用 POST 的页面上使用“后退”按钮时,大多数浏览器都会警告您重新发送请求将再次执行(假定)写入操作。 GET 没有这样的事情,因为假定 GET 不会改变任何东西。
【讨论】:
使用 GET 写入违反了REST。这样做有更根本和哲学上的原因,而不仅仅是因为机器人会跟随它们。但这并不意味着它是不允许的。
GET 不应导致写入操作的原因是,在 RESTful 服务中,有一个隐含的协议,即 GET 是“安全的”,不会导致远程发生任何事情。 GET 仅用于获取信息。如果要发送信息,请使用 POST。
【讨论】:
/watch_user?action=<true or false>&id=<user_to_watch_id>&tok=<RandomCookieValueSoImageCantTriggerThis> 这会很糟糕吗?它可以撤消。