繁体   English   中英

将 url 作为 url 参数传递的推荐方法是什么?

[英]What is the recommended way to pass urls as url parameters?

使用&url='+encodeURIComponent(url); 将 URL 从浏览器传递到服务器将对 url 进行编码,但是当它在服务器上被解码时,url 的参数被解释为单独的参数,而不是单个 url 参数的一部分。

将 url 作为 url 参数传递的推荐方法是什么?

encodeURIComponent()应该可以工作。 例如,

'&url=' + encodeURIComponent("http://a.com/?q=query&n=10")

产生

"&url=http%3A%2F%2Fa.com%2F%3Fq%3Dquery%26n%3D10"

(其值中没有任何&? )。 当您的服务器获取此 url 时,它应该能够对其进行解码以获取原始 URL:

param["url"] = "http://a.com/?q=query&n=10"

我不确定您使用的是什么服务器(例如 Rails、Django ……),但这应该可以在任何普通系统上“开箱即用”。

使用 '&url='+encodeURIComponent(url); 将 URL 从浏览器传递到服务器将对 URL 进行编码

是的,这就是你应该做的。 encodeURIComponent是对文本值进行编码以放入查询字符串的一部分的正确方法。

但是当它在服务器上被解码时,url 的参数被解释为单独的参数,而不是单个 url 参数的一部分。

然后服务器确实很坏。 如果确实发生了这种情况,则需要在服务器端修复它。

代码?

我遇到了这个问题,我个人无法使用任何已接受的答案,但也可以通过将 url 编码为 Base 64,将其作为参数传递,然后对其进行解码来完成。 使用 javascript,您可以使用 btoa(s) 将字符串 s 编码为 base 64,并使用 atob(s) 进行解码。 其他语言有做同样事情的方法。 Base 64 有点像用 64 个字符(例如,所有大写字母、所有小写字母和几个符号)来表示更大的一系列字符。 有点像我们在二进制中表示字母的方式。 但是使用起来很好,因为这样我们就可以将 base64 字符串作为参数传递,然后它们就不会干扰/以奇怪的方式被解释,然后我们可以在下一阶段对它们进行解码。

使用 escape() 对它进行 url 编码,它将对 & 符号进行编码,这样就不会发生这种情况。

老实说,使用 Google URL Shortener。 然后你可以在 url 查询字符串中使用 URL 代码: http : //example.com/url/A7dh3

在您的应用程序中,获取并添加 Google URL Shortener 域名,然后执行重定向。 这也通过 Google Analytics 添加了对 URL 的跟踪。 这种方法有很多优点。 只是一个简短的代码并添加了跟踪数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM