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

Callback URL is ignoring parameter value after &

我卡在了这一点上。登录后,我得到了推荐-url,我将其放入 www.url.com?par1=val&callback="referral-url"。我的推荐 url 就像 www.ref-url.com?param1=val1¶m2=val2¶m3=val3。我的问题是登录后我得到了削减 url 即 www.ref-url.com?param1=val1 。我认为它在“&”之后忽略了 url。我正在使用经典的 asp 进行开发。任何帮助都会非常有帮助。

如果包含 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

在另一个 URL 查询中传递带有查询的 URL 有点棘手。它工作的唯一方法是对其进行编码。例如:

https://website.com/?a=1&url=https%3A%2F%2Fwebsite.com%2F%3Fz%3D1%26y%3D2

但是,当你想return到你通过查询传递的url时,你需要解码它,否则它将不起作用。在重定向 url.

之前,您可以在 "login Page" 上使用以下功能
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)