Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http 有两个?在URL中-它有效吗?_Http_Url_Standards - Fatal编程技术网

Http 有两个?在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

事情是这样的:

假设我有这样一个基本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.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。我同意,重定向应该通过跟踪参数。