【问题标题】:Why does a percent symbol in a get request break my site?为什么获取请求中的百分比符号会破坏我的网站?
【发布时间】:2011-05-11 19:45:19
【问题描述】:

我觉得问这个很愚蠢,但我正在做一个用户输入一些输入的表单,有时输入是一个百分比符号,比如 5%。当它作为 GET 请求的一部分传递时,如下所示:

http://kburke.org/project/company_x/?id=4&var1=1&ops=23255&cashflow=25000&growth=5%25&pv=100000&roe=20&profitmargin=30&roe=80&turnover=2

我收到 404 Page Not Found 错误。当我删除查询字符串对时

&growth=5%25

页面加载正常。有人可以帮助解释问题所在吗?

编辑:我尝试从页面中删除所有 Javascript,但服务器仍然崩溃。我也只是尝试在 MAMP 中以

的形式运行它
http://localhost:8888/project/company_x/?id=4&var1=1&ops=23255&cashflow=25000&growth=5%25&pv=100000&roe=20&profitmargin=30&roe=80&turnover=2

而且效果很好。我想知道这是否是我自己的服务器的问题。当我打开 Firebug 到控制台并运行页面时,我看到一个非常短暂的错误,然后加载 404 页面 - 有没有办法可以暂停重定向以便阅读错误消息?

【问题讨论】:

  • 网址转义正确。服务器出于某种原因正在崩溃。在不了解服务器应用程序细节的情况下,我们只能猜测问题所在。

标签: http url forms escaping


【解决方案1】:

查看URL ENCODING。 url 中的“%”字符意味着一些特殊的东西。

您在 url 中将空格字符“”编码为 %20。 您在 url 中将百分比字符“%”编码为 %25。

因此,在您的网址到达脚本后,您的参数“增长”将等于“5%”。

我尝试弄乱您的网址,但您的脚本在尝试解析增长参数时似乎崩溃了,并且您的网站通过将您发送到 404 页面来隐藏该崩溃。如果您需要更多帮助,我会发布您的脚本代码。

【讨论】:

  • 我尝试从违规页面中删除所有 Javascript,但仍然出现 404 错误。我也尝试在 MAMP 中运行它并且没有收到错误。这是否有助于缩小问题范围?
  • @Michael Pryor,我可以使用 encodeUri() 转换该百分比或整个 url,然后像这样发送到后端,假设我在 GET request ajax $.ajax({ type : 'GET' , url: encodeURI(baseUrl+'/'+'GATE -I- %04') }) 中写这个是好习惯吗, 因为我的用户输入数据可能是特殊字符,如 %, & , _ ,- 。我已经阅读了 encodeUri、encodeUri 组件的帖子,但无法理解哪个最适合用于特殊字符。请指导我。
猜你喜欢
  • 1970-01-01
  • 2019-05-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-23
  • 1970-01-01
  • 1970-01-01
  • 2013-06-25
  • 2013-06-07
相关资源
最近更新 更多