request.serverVariables() «URL» против «Script_Name»
-
22-08-2019 - |
Вопрос
Я поддерживаю классическое приложение asp и, просматривая код, наткнулся на две похожие строки кода:
Request.ServerVariables("URL")
' Output: "/path/to/file.asp"
Request.ServerVariables("SCRIPT_NAME")
' Output: "/path/to/file.asp"
Я не понимаю...в чем разница?оба они игнорируют установленную мной перезапись URL-адреса, которая помещает папку /path в качестве корневого документа (указанный выше URL-адрес перезаписывается на «/to/file.asp»)
Больше информации:Сайт развернут на IIS 7.
Решение
Это может быть ошибка в IIS 7.
Я не мог получить Request.ServerVariables("URL")
и Request.ServerVariables("SCRIPT_NAME")
для возврата разных значений.Я пробовал случаи, когда они вызывались из включенного файла (<!--#include file="file.asp"-->
) или после Server.Transfer
.
Другие советы
URL-адрес. Предоставляет базовую часть URL-адреса без какой-либо строки запроса или дополнительной информации о пути.В качестве необработанного URL-адреса используйте HTTP_URL или UNENCODED_URL.
SCRIPT_NAME Виртуальный путь к выполняемому сценарию.Может использоваться для URL-адресов, ссылающихся на самих себя.
Видеть, http://www.requestservervariables.com/urlи /script_name для определений.
Возможно ли это в случае Server.Transfer?
В случае, когда вы выполняете server.transfer, я думать вы получите разные результаты
то естьSCRIPT_NAME будет, например./path/to.transferredfile.asp, тогда как URL-адрес останется как /path/to/file.asp