我现在被困住了。登录后,我将获得引荐网址,并将其放入 www.url.com?par1=val&callback=“ referral-url” 。我的引荐网址就像 www.ref-url.com?param1=val1¶m2=val2¶m3=val3 。我的问题是登录后我得到了剪切的URL,即 www.ref-url.com?param1=val1 。我认为它会忽略'&'之后的网址。我使用经典的ASP进行开发。任何帮助都将非常有帮助。
答案 0 :(得分:1)
如果要包含URL作为查询字符串参数,则需要使用Server.URLEncode
,尤其是如果所包含的URL也包含查询字符串。
Dim login_redirect, login_referrer
login_redirect = "http://www.url.com/?par1=val&callback="
login_referrer = "http://www.ref-url.com/?param1=val1¶m2=val2¶m3=val3"
response.write login_redirect & Server.URLEncode(login_referrer)
输出:
http://www.url.com/?par1=val&callback=http%3A%2F%2Fwww%2Eref%2Durl%2Ecom%2F%3Fparam1%3Dval1%26param2%3Dval2%26param3%3Dval3
答案 1 :(得分:0)
在另一个URL查询中传递带有查询的URL有点棘手。它起作用的唯一方法是对其进行编码。例如:
https://website.com/?a=1&url=https%3A%2F%2Fwebsite.com%2F%3Fz%3D1%26y%3D2
但是,当您想返回通过查询传递的网址时,需要对其进行解码,否则它将无法正常工作。您可以在重定向网址之前在“登录页面”上使用以下功能。
Function URLDecode(sConvert)
Dim aSplit
Dim sOutput
Dim I
If IsNull(sConvert) Then
URLDecode = ""
Exit Function
End If
' convert all pluses to spaces
sOutput = REPLACE(sConvert, "+", " ")
' next convert %hexdigits to the character
aSplit = Split(sOutput, "%")
If IsArray(aSplit) Then
sOutput = aSplit(0)
For I = 0 to UBound(aSplit) - 1
sOutput = sOutput & _
Chr("&H" & Left(aSplit(i + 1), 2)) &_
Right(aSplit(i + 1), Len(aSplit(i + 1)) - 2)
Next
End If
URLDecode = sOutput
End Function
例如,您应该在登录页面上具有上述功能和以下代码:
Dim callback
callback = Request("callback")
callback = URLDecode(callback)
Response.redirect(callback)