возникают проблемы с чтением значений заголовков в классическом ASP - PullRequest
8 голосов
/ 07 декабря 2010

Это все внутренние серверы и программное обеспечение, поэтому я очень ограничен в своих возможностях, но это то, где я нахожусь Это уже пластырь для обходного пути, но у меня нет выбора, поэтому я просто пытаюсь заставить его работать.

У меня есть простой файл .asp на моем сервере, который защищен службой, которая будет обрабатывать проверку подлинности пользователя (я не контролирую эту службу). Когда пользователь переходит к этому файлу .asp, он требует, чтобы он прошел аутентификацию через службу, а затем служба перенаправляет его в файл .asp.

Служба вставляет пользовательские значения в заголовок http, которые позволяют мне определить, кто вошел в систему (мне это нужно в дальнейшем). Когда я использую asp для просмотра значений ALL_RAW и ALL_HTTP из заголовка, я вижу все пользовательские значения. Но когда я пытаюсь назвать эти значения конкретно, я ничего не получаю.

Я запустил этот простой цикл:

<%
for each x in Request.ServerVariables
  response.write("<B>" & x & ":</b> " & Request.ServerVariables(x) & "<p />")
next
%>

и отображаются все клавиши, включая пользовательские. Но ни одно из пользовательских значений не будет. Значения - это та часть, которая мне нужна.

единственное, что я могу найти уникальным в пользовательских значениях, это то, что они выглядят немного иначе в значении ALL_RAW, но все они выглядят правильно в ALL_HTTP. Насколько я могу судить, они правильно отформатированы. единственные различия форматирования между стандартными и пользовательскими значениями - это регистр и подчеркивание вместо дефисов.

Почему я не могу прочитать эти пользовательские значения?

Ответы [ 3 ]

16 голосов
/ 10 декабря 2010

Я нашел свой ответ.

Когда я запускаю этот цикл

<%
for each x in Request.ServerVariables
  response.write("<B>" & x & ":</b> " & Request.ServerVariables(x) & "<p />")
next
%>

, он возвращает список всех имен, которые были в заголовке, и их значения.Пользовательское значение, которое я искал, показывалось бы как имя «HTTP_CUSTOM_ID», и я мог видеть его со значением в ALL_HTTP и ALL_RAW, но когда я попытался получить это конкретное значение, он вернул бы пустую строку.Решение, на которое я наткнулся (общаясь с кем-то еще здесь, на работе, который столкнулся с аналогичной ситуацией с тем же сервисом, который я пытался приспособить, это использовать:

<%=Request.ServerVariables("HEADER_CUSTOM_ID")%>

При просмотре полного заголовка ничегозаставил меня использовать префикс HEADER вместо HTTP, на самом деле, это привело меня к противоположности. И я нигде не нашел упоминаний об этом нигде в поиске в Интернете. Поэтому я публикую свой собственный ответ на свой вопрос здесь, так что он находится навеб.

1 голос
/ 07 декабря 2010

Для удобства, почему бы просто не проанализировать Request.ServerVariables ("ALL_RAW") самостоятельно?

0 голосов
/ 04 января 2013

Есть лучший способ, чем разбирать каждый элемент самостоятельно. Посмотрите на значения в Request.ServerVariables("ALL_HTTP") и найдите нужный заголовок, но названный немного по-другому.

Все заголовки HTTP начинаются с HTTP_. Я искал If-None-Match , и он был в коллекции как HTTP_IF_NONE_MATCH . Для получения значения я использовал Request.ServerVariables("HTTP_IF_NONE_MATCH").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...