URL обратного вызова игнорирует значение параметра после & - PullRequest
0 голосов
/ 23 февраля 2019

Я застрял в этой точке.После входа в систему я получаю 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 для разработки.Любая помощь будет очень полезна.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Передача URL-адреса с запросом внутри другого URL-запроса немного сложна.Единственный способ, которым это работает, - это закодировать его.Например:

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

Но, если вы хотите вернуться к URL-адресу, который вы передали через запрос, вам нужно декодировать его, иначе он не будет работать.Вы можете использовать следующую функцию на своей «странице входа» перед перенаправлением URL.

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)
0 голосов
/ 23 февраля 2019

Вам необходимо использовать Server.URLEncode, если вы включаете URL в качестве параметра строки запроса, особенно если включенный 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
...