【问题标题】:Why Vanilla/jQuery redirected URL inside a iframe is decoded/encoded?为什么 iframe 内的 Vanilla/jQuery 重定向 URL 被解码/编码?
【发布时间】:2018-10-19 11:15:31
【问题描述】:

从后端 API 我得到一个像这样的 URL http://example.com/thispage.html 和不同的参数 lang=frreference=%2BParam

表单(在 iframe 内)看起来像:

<form id="myform" method="POST" action="http://example.com/thispage.html">
   <input name="lang" value="fr" type="hidden" />
   <input name="reference" value="%2BParam" type="hidden"/>
   ...
</form>

JavaScript 文件如下所示:

$("#myform").submit();

提交表单时,url 不符合预期。它看起来像:

http://example.com/thispage.html?lang=fr&reference=%252BParam

而不是

http://example.com/thispage.html?lang=fr&reference=%2BParam

为什么iframe内的form重定向失败,重定向时参数被编码?

【问题讨论】:

  • 因为在未编码的字符串中通常没有编码字符。 JQuery(或者可能是浏览器,不确定)可能只是对您提供的任何 URL 进行编码。否则,如果那里有非 URL 字符会怎样?
  • 是的,就像 référence :)
  • 如果表单确实是作为 POST 请求发送的,则根本不应该在 URL 中发送参数。
  • 浏览器不是在你的字符串中寻找已经编码的数据,它只是对你给它的内容进行编码。如果它已经编码,它会重新编码。那不是浏览器的问题,而是您的应用程序的问题。表单最初的想法是捕获用户数据,用户通常不会输入编码数据。这不是浏览器的编码系统旨在处理的事情。但是,正如 max 所说,您的表单应该是由 POST 提交的。所以无论如何你都不应该有任何 URL 参数。但这并不重要,因为 POST 变量将以相同的方式进行编码。
  • 如果您要这样做,您应该在将参数添加到表单字段之前手动解码原始 URL 中的参数。

标签: javascript jquery redirect


【解决方案1】:

iFrame 在从 POST 重定向时更改 url。我的解决方案是在 iFrame 之外重定向:

window.open(urlToBeRedirect);

【讨论】:

    猜你喜欢
    • 2017-09-29
    • 2013-01-29
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 2012-04-08
    • 2013-04-21
    • 1970-01-01
    相关资源
    最近更新 更多