Request.QueryString
извлекает параметры строки запроса по значению из заголовков страницы.
Вы можете вносить изменения в строку запроса только после ее получения с помощью Request.QueryString
, но вы не можете вносить изменения непосредственно в Request.QueryString
, поскольку он доступен только для чтения (если вы могли бы внести изменения, вы, вероятно, использовали бы * 1006). *, но это недопустимая команда ответа).
Полагаю, вы пытаетесь очистить все строки запроса за один раз? Это не действительно возможно или действительно необходимо. Вы обычно очищаете строку запроса, как и когда вы ее запрашиваете:
Response.Write(sanitized_param(Request.QueryString("myQS")))
Или сначала назначить строку запроса переменной, а затем очистить ее:
Dim myQS
myQS = Request.QueryString("myQS")
myQS = sanitized_param(myQS)
' or
myQS = sanitized_param(Request.QueryString("myQS"))
Как только строка запроса назначена переменной и подвергнута дезинфекции, вы можете ссылаться на эту переменную так часто, как вам нравится, без необходимости снова передавать ее в функцию sanitize.
Кроме того, ваш пример кода не имеет особого смысла. Значение key
в вашем цикле for each
ссылается только на имена строк вашего запроса, а не на их значения. Если бы Response.QueryString
была действительной командой ASP, вы бы сделали:
Response.QueryString(key) = sanitized_param(Request.QueryString(key))
Но опять же, это невозможно.
<ч />
РЕДАКТИРОВАТЬ: Это решение может быть то, что вы ищете:
Создайте объект словаря, назовите его, например, «QueryString». Переберите все строки запроса и добавьте очищенную версию в объект словаря.
Dim QueryString : Set QueryString = Server.CreateObject("Scripting.Dictionary")
For Each Item In Request.QueryString
QueryString.Add Item,sanitized_param(Request.QueryString(Item))
next
Теперь, чтобы получить очищенную версию строки запроса, просто используйте:
QueryString.Item("query_string_name")
Или для оригинальной неанизированной версии вы все равно можете использовать:
Request.QueryString("query_string_name")
Как и Request.QueryString
, объект словаря простителен и не вернет ошибку, если вы запросите несуществующую строку запроса.
<ч />
Вы также можете создать функцию для извлечения очищенных строк запроса, например:
Function SanitizedQS(ByVal qsName)
SanitizedQS = sanitized_param(Request.QueryString(qsName))
End Function
И вместо использования Request.QueryString("query_string_name")
просто используйте SanitizedQS("query_string_name")
.