在表单POST之前清除查询字符串的引用

时间:2012-11-19 22:58:05

标签: javascript

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

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

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

我解析出单独的错误消息并将它们推送到DIV,告知用户出了什么问题。到目前为止一切都很好。

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

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

您可以看到问题,但要明确:

  1. 表格足够长,可以开始;这些未经检查的附加最终会导致查询字符串超出浏览器限制而导致错误。
  2. 解析算法不报告最新问题。它仍然在报告原始问题。
  3. 对于一个简单的问题,这是一个很长的背景故事:

    在提交事件中,有没有办法使用JavaScript清除引用URL中的查询字符串?我不想做任何引用欺骗或避免任何合法的安全问题,我只是希望能够发送“真正的”引用页面减去查询字符串。

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

1 个答案:

答案 0 :(得分:1)

这是一种方法:

  1. 第三方网站的帖子与引用者http://myapp.com/mypage一起发送。
  2. 第三方网站重定向到http://myapp.com/mypage?errorMessages=Invalid
  3. 在服务器端的HTTP请求处理程序(无论是什么)中,将errorMessages放入会话(服务器端)并重定向到http://myapp.com/mypage
  4. 在渲染页面时,您使用会话中的errorMessages(必要时清除它们)。我相信这些被称为flash会话变量。