通过电子邮件中的链接收集调查回复,避免与预取和GET误用发生冲突



我想给一些用户发一封电子邮件,问他们一个问题,我想让他们尽可能容易地回答。理想情况下,问题和答案应该在电子邮件中。每个答案都是一个链接,点击后会记录他们的答案。

当然,这两者都违反了GET的使用(应该是POST),并且存在链接被邮件服务器、邮件客户端或浏览器预取的风险。

我的问题是:是否有这样做的最佳实践?有什么好的工作吗?预取问题有多大?

我有一些想法,虽然我不确定它们是不是好主意。

  1. 这些链接都可以加载同一个页面而不记录答案。链接中的查询参数可以指定单击了哪个答案。加载页面上的JS可以解析该答案,并使用该答案生成POST。但也许一些预取服务也执行JS?

  2. 如果电子邮件中的链接确实记录了答案,我可以实现一些逻辑,以便如果加载了多个答案链接(对于特定的电子邮件/用户),那么该电子邮件/用户的所有响应都标记为无效。可能意味着丢失一些数据,但会从预取中删除错误数据(假设任何预取算法都会命中多个链接)

  3. 我可以只是建立它,看看会发生什么,但似乎我必须做很多侦探工作来弄清楚到底发生了什么,我相信别人已经比我想得更多了:)

感谢汤姆

检测预取器是微不足道的。只使用user-agent报头,不计算已知预取器的投票(我没有一个列表—您可能需要记录它,然后随着时间的推移进行积累)。我还没有见过在其用户代理中不自我识别的预取程序。如果您想要额外的安全层,那么让页面启动一些Javascript,因为不太可能狡猾的预取程序也会运行Javascript。或者更好的做法是,让用户在投票确认页面输入验证码。

在没有其他输入的情况下,我将最佳解决方案记录为:

这些链接都可以加载同一个页面而不记录答案。一个链接中的查询参数可以指定点击了哪个答案。加载页面上的JS可以解析它,并用它创建一个POST的答案。

最新更新