0

我有一个 POST 到 3rd-party 服务以进行验证和信息捕获的表单。在 3rd-party 后端,您可以为错误指定一个 URL,其中一个选项是“引用 URL”。

这看起来很完美。用户发布了一个无效的表单,他们所在的页面“重新加载”(不是真的,但这就是印象),错误消息取自查询字符串,如下所示:

http://somesite.com/?errorMessages=some%20message~~~some%20other%20message~~~etc

我解析出单独的错误消息并将它们推送到一个 DIV 中,该 DIV 会告知用户出了什么问题。到现在为止还挺好。

但是,用户继续搞砸表单,当他们再次发布时,引用者现在是整个 URL,包括错误消息。服务器回复原始错误消息(毕竟是引用者!)以及任何剩余问题:

http://somesite.com/?errorMessages=some%20message~~~some%20other%20message~~~etc&errorMessages=new%20message~~~another%20new%20message~~~etc

您可以看到问题,但要清楚:

  1. 表格足够长,可以开始;这些未经检查的附加最终会导致查询字符串超出浏览器限制并且您会收到错误。
  2. 解析算法不只报告最新的问题。它仍在报告原始问题。

对于一个简单的问题,这是一个很长的背景故事:

在提交事件中,有没有办法使用 JavaScript 从引用 URL 中清除查询字符串?我不想进行任何引荐来源网址欺骗或避免任何合法的安全问题,我只想能够发送“真实”引荐页面减去查询字符串。

我已经在使用 jQuery,所以任何答案也可以免费使用。

4

1 回答 1

1

这是一种方法:

  1. 到第 3 方网站的帖子带有推荐人http://myapp.com/mypage
  2. 第 3 方网站重定向到http://myapp.com/mypage?errorMessages=Invalid
  3. 在服务器端的 HTTP 请求处理程序(无论它是什么)中,您将 errorMessages 放入您的会话(在服务器端)并重定向到http://myapp.com/mypage
  4. 在渲染页面时,您使用会话中的错误消息(如果需要,清除它们)。我相信这些被称为闪存会话变量。
于 2012-11-19T23:05:03.737 回答