Http 有两个?在URL中-它有效吗?
事情是这样的: 假设我有这样一个基本URL:Http 有两个?在URL中-它有效吗?,http,url,standards,Http,Url,Standards,事情是这样的: 假设我有这样一个基本URL: www.mysite.com?my_first_param=1&my_second_param=2 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.m
www.mysite.com?my_first_param=1&my_second_param=2
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.mysite.com?my_first_param=1&my_second_param=2&my_redirect_site=www.myothersite.com
想象一下,我正在使用一个服务,其中他们向我的URL添加了新的跟踪参数。例如:
first_tracking=value1&second_value=value2
由于我的基本url已经有一个“?”参数添加了一个“&”,因此我的最终url如下所示:
www.mysite.com?my_first_param=1&my_second_param=2
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 不,URL中不能有第二个问号 此外,如果重定向URL中有符号,则它们将被视为主URL的单独参数,而不会被视为连接到重定向URL
如果你想做这样的重定向,你需要对整个重定向的URL进行URL编码。大多数面向web的语言中都有标准函数来实现这一点。您应该正确地对每个参数名称和值进行URL编码,因此如果您想要的参数映射是:
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,以便为您处理此编码。对参数进行编码,“?”将替换为%3F这取决于您对添加跟踪参数的服务的控制程度。 添加参数后,您可以更改url吗 如果可以,那么应该使用url生成器将跟踪参数添加到重定向url中,然后url对该url进行entriely编码,包括跟踪参数
如果您无法控制并且第三方修改了您的url,那么您必须在重定向时执行此操作,读取url中的参数,获取重定向url和跟踪参数,在重定向之前将跟踪参数添加到重定向url 我认为它不会通过QueryParams。我同意,重定向应该通过跟踪参数。