http - 有两个?在 URL 中 - 它有效吗?

标签 http url standards

事情是这样的:

假设我有一个这样的基本 URL:

www.mysite.com?my_first_param=1&my_second_param=2

但现在我想向我的 URL 添加一个新参数:

www.mysite.com?my_first_param=1&my_second_param=2&my_redirect_site=www.myothersite.com

想象一下,我正在使用一项服务,他们向我的 URL 添加新的跟踪参数。例如:

first_tracking=value1&second_value=value2

因为我的 BASE url 已经有一个“?”参数添加了“&”,所以我的最终 URL 将如下所示:

www.mysite.com?my_first_param=1&my_second_param=2&my_redirect_site=www.myothersite.com&first_tracking=value1&second_value=value2

这是一个带有多个参数的正确 URL,但是当我重定向到 www.myothersite.com 时,由于参数以“&”开头,它们丢失了。添加以“?”开头的跟踪参数是否正确? ?像这样:

www.mysite.com?my_first_param=1&my_second_param=2&my_redirect_site=www.myothersite.com?first_tracking=value1&second_value=value2

如果没有,处理这个问题的好方法是什么?我认为重定向负责将跟踪参数传递给重定向 URL。

最佳答案

你应该正确地对每个参数名称和值进行 URLencode,所以如果你想要的参数映射是这样的:

my_first_param => 1
my_second_param => 2
my_redirect_site => www.myothersite.com?first_tracking=value1&second_value=value2

那么你应该将其作为查询字符串传递:

?my_first_param=1&my_second_param=2&my_redirect_site=www.myothersite.com%3Ffirst_tracking%3Dvalue1%26second_value%3Dvalue2

您应该使用一个已经执行此操作的库来构建 URI 来为您处理此编码。

关于http - 有两个?在 URL 中 - 它有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14356385/

相关文章:

php - 如何通过 URL 接受 GET 参数,但不包含 ".php?argument=value"

http - 什么被认为是 HTTP header 中的空格

json - 当我通过 AJAX 获取 JSON 数据时,数据存储在哪里?

Ruby 通过代理打开 uri 下载

url - UTF-8 url 必须是大写或小写

Java 将 Jar URL 转换为文件

c - 是否在 C 未定义行为中将任意数量的字符串与嵌套函数调用连接起来?

HTML 5 - 偷偷摸摸的东西

http - 为什么浏览器不遵守 Cache-Control header ?

http - Angular 2 HTTP 服务从 https 切换到 http 方案