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

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

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

84194 次浏览

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

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

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

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

那服务器的确是坏了。如果真是这样,那么您需要在服务器端修复它。

密码?

encodeURIComponent()应该可以,

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

生产

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

(值中没有任何 &?)。 当您的服务器得到这个 URL 时,它应该能够解码它以获得原始的:

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

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

老实说,使用谷歌网址缩短程序。然后您可以只使用 URL 查询字符串中的 URL 代码: http://example.com/url/A7dh3

在您的应用程序中,采取并预置谷歌网址缩短程序的域名,并进行重定向。这也增加了通过 GoogleAnalytics 对 URL 的跟踪。这种方法有很多优点。只是一个简短的代码,并添加了跟踪数据。

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