javascript - 如何防止 JavaScript 在 location.replace() 中对查询字符串进行编码?

标签 javascript query-string url-encoding location-href

我通过 Django 在 HTML 模板中打印了一个已编码的 URL 字符串。当我将其放入对 location.replace() 的调用中时,它会被一些 JavaScript 破坏,这些 JavaScript 破坏了 =%已经存在于查询字符串中,导致后续 URL(在我的域之外)不知道如何处理它。

如何防止 JavaScript 更改它?

编辑: 示例 url 字符串:

'http://destination.com/?name=https%3A%2F%2Fexample.com%2F&nextparam=nextvalue'

将上面的内容传递到 location.replace() 会导致重定向到:

http://destination.com/?name%3Dhttps%253A%252F%252Fexample.com%252Fnextparam=nextvalue

这显然是不正确的。

该 URL 的查询字符串参数之一是 URL。从 Django 传递的安全编码字符来自字符串 ':/' 中的字符集,基本上是 ' http://example.com/ ' 得到正确编码。美好的。 '=%&' 都是查询字符串中未触及的部分。

在我的在 js 之外工作的编码字符串(例如在 anchor 标记 href 中),此链接到正确的 url。

但是当我将它放入 window.location 时,它会重定向,它会转义查询字符串中的所有字符,并出于某种原因删除“&” - 甚至用于对 qs 中的原始 URL 参数进行编码的“%”。检查源代码显示该字符串与上面 a 标记中的字符串相同。

是否有办法防止 JavaScript 位置属性在重定向之前转义内容?

最佳答案

在调用 location.replace() 之前考虑对查询字符串进行解码。

您可以使用内置 decodeURIComponent 来执行此操作功能。

关于javascript - 如何防止 JavaScript 在 location.replace() 中对查询字符串进行编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12602289/

相关文章:

javascript - JavaScript 中的事件冒泡

html - 在 HTML href/src 属性中应编码除符号 (&) 之外的哪些其他字符?

Node.js 使用 Express 在 HTTP POST 上以 multipart/form-data 形式写入 jpeg 文件

java - 作为 URL 传递的编码参数 - 备用选项?

javascript - 保留 Rails 中 CK 编辑器创建的文本样式

javascript - 为什么分页不起作用?

php - 包含句点或点的 URL 在 PHP 中给出 403 禁止错误

php - Google+ 分享链接不显示说明?

javascript - ASP.NET 查询字符串第二个值

javascript - 如何在不使用语言环境的情况下在 momentjs 库中设置一周的第一天