回调URL忽略&之后的参数值

时间:2019-02-23 09:17:46

标签: asp.net url vbscript asp-classic referrals

我现在被困住了。登录后,我将获得引荐网址,并将其放入 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进行开发。任何帮助都将非常有帮助。

2 个答案:

答案 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&param2=val2&param3=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)