如何对 URL 进行编码以将其作为 GET 参数传递

发布于 2024-08-29 16:00:31 字数 646 浏览 2 评论 0原文

我加载一个 JavaScript 文件,该文件将当前页面的 URL 作为参数。这是我使用的代码:

document.write(unescape('%3Cscript src=\"' + _vis_opt_protocol + 'domain.com/js.php&a='+account_id+'&url='+encodeURIComponent(document.URL)+'&random='+Math.random()+'\" type=\"text/javascript\"%3E%3C/script%3E'));

我认为encodeURIComponent 会完成正确编码URL 的工作。然而,在加载 JS 文件时,浏览器也会解释编码的 URL。例如,如果 document.URL 为 http://example.com/?test=1#nono< /a> 然后浏览器将 test 解释为 JS 的另一个参数,并且不会在 #nono 之后(包括)发送任何内容,因为它认为它是一个锚点。

对 URL 进行编码以便将其按原样传递到服务器的最佳方法是什么?我也在尝试使用 base64 或其他形式的编码。

I load a JavaScript file which takes current page's URL as a parameter. Here is the code I use:

document.write(unescape('%3Cscript src=\"' + _vis_opt_protocol + 'domain.com/js.php&a='+account_id+'&url='+encodeURIComponent(document.URL)+'&random='+Math.random()+'\" type=\"text/javascript\"%3E%3C/script%3E'));

I thought encodeURIComponent will do the job of properly encoding the URL. However, while loading JS file, browsers interpret the encoded URL too. For example if the document.URL is http://example.com/?test=1#nono then the browser interprets test as another parameter to JS and doesn't send anything after (and including) #nono because it thinks it is an anchor.

What is the best way to encode the URL so that it is passed as it is to the server? I was also toying with base64 or some other form of encoding.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

故笙诉离歌 2024-09-05 16:00:31

问题是您调用的 unescape 函数撤消了 encodeURIComponent 的工作。你可以试试这个:

document.write('<script type="text/javascript" src="' + _vis_opt_protocol + 'domain.com/js.php&a=' + account_id + '&url=' + encodeURIComponent(document.URL) + '&random=' + Math.random() + '"><\/sc' + 'ript>');

The problem is that the unescape function you are calling undoes do job of encodeURIComponent. You may try this:

document.write('<script type="text/javascript" src="' + _vis_opt_protocol + 'domain.com/js.php&a=' + account_id + '&url=' + encodeURIComponent(document.URL) + '&random=' + Math.random() + '"><\/sc' + 'ript>');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文