无法在经典ASP中读取标题值

时间:2010-12-06 22:19:39

标签: http asp-classic request

这是所有内部服务器和软件,因此我对我的选择非常有限,但这就是我所处的位置。这已经成为一种解决方案的创可贴,但我别无选择,所以我只是想让它发挥作用。

我的服务器上有一个简单的.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中看起来都是正确的。我可以告诉他们,它们的格式正确。标准值和自定义值之间唯一的格式差异是大小写和下划线而不是连字符。

为什么我不能阅读这些自定义值?

2 个答案:

答案 0 :(得分:16)

我找到了答案。

当我运行此循环时

<%
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 :(得分:1)

为方便起见,为什么不自己解析Request.ServerVariables(“ALL_RAW”)?