【问题标题】:url submitted to codeigniter controller gets decoded wrong提交给 codeigniter 控制器的 url 被解码错误
【发布时间】:2011-10-13 23:21:59
【问题描述】:

我有一个要保存的 url,所以我将 jquery ajax 发布到控制器,我可以看到该帖子是 http://www.nailsupplies.us/products/ESSIE%252dMatte-About-You-0.5oz..html 但是当简单地返回 $this->input->post('link'); 我明白了 http://www.nailsupplies.us/products/ESSIE%2dMatte-About-You-0.5oz..html

起初我认为这可能是一些疯狂的 XSS 过滤器,但即使将第二个参数设置为 false 也不会影响这一点,并且执行 $_POST 也不会影响这个问题到底是怎么回事?

复制 您可以前往http://e-ønsker.dk 自行测试,然后单击“Tilføj ønske” - 如果您随后单击左侧的链接链图标,插入 URL 并点击“GEM”(保存)按钮,您将看到ajax 发布和响应,响应只是 $this->input->post()

的输出

如果有人想知道该语言是丹麦语

【问题讨论】:

    标签: forms codeigniter url


    【解决方案1】:

    您似乎遇到了双重编码。 %25 被解码为 '%' 这是正确的。尽量避免在发布之前对 URL 进行编码。

    您应该得到http://www.nailsupplies.us/products/ESSIE%2dMatte-About-You-0.5oz..html,它将正确解码为http://www.nailsupplies.us/products/ESSIE-Matte-About-You-0.5oz..html (%2d=-)。

    如果没有看到您的客户端脚本,我将无能为力。奇怪的是它只编码了第一个连字符而不是后面的。

    【讨论】:

    • 奇怪的是,唯一有效的 url 是nailsupplies.us/products/ESSIE%252dMatte-About-You-0.5oz..html。您实际上可以在e-ønsker.dk 中自己测试它,然后单击“Tilføj ønske” - 如果您然后单击左侧的链接链图标,插入一个 URL 并单击“GEM”按钮,您将看到 ajax 帖子和响应,响应只是 $this->input->post() 的输出,谢谢
    • 那就是相反的问题了。您需要在 javascript (encodeUri) 中对字符串进行编码。您应该编码并获取 .../products/ESSIE%2d252dMatte%2d... 然后将其再次解码回 .../products/ESSIE%252dMatte-.. 。
    猜你喜欢
    • 2018-07-22
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多