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

Mit*_*lWB 9 http request asp-classic

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

我的服务器上有一个简单的.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
%>
Run Code Online (Sandbox Code Playgroud)

并显示所有键,包括自定义键.但是没有一个自定义会.价值观是我需要的部分.

我唯一能发现自定义值的独特之处在于它们在ALL_RAW值中看起来略有不同,但它们在ALL_HTTP中看起来都是正确的.我可以告诉他们,它们的格式正确.标准值和自定义值之间的唯一格式差异是大小写和下划线而不是连字符.

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

Mit*_*lWB 17

我找到了答案.

当我跑这个循环

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

它将返回标题中所有名称及其值的列表.我正在寻找的自定义值将显示为名称"HTTP_CUSTOM_ID",我可以看到它,它在ALL_HTTP和ALL_RAW中的值,但是当我尝试拉出该特定值时,它将返回一个空字符串.我偶然发现的解决方案(通过与在工作中遇到类似情况的其他人交谈我试图容纳的相同服务是使用:

<%=Request.ServerVariables("HEADER_CUSTOM_ID")%>
Run Code Online (Sandbox Code Playgroud)

在查看完整的标题时,没有任何东西让我使用HEADER前缀而不是HTTP,事实上,它让我反对.我也从未在网上搜索任何提及这一点.所以我在这里发布我自己的问题答案,所以它在网上.

  • 为了文档的利益,[IIS服务器变量]的MSDN页面(http://msdn.microsoft.com/en-us/library/ms524602%28VS.90%29.aspx)提到了HEADER_前缀,并且[this博客文章](http://blogs.msdn.com/b/david.wang/archive/2006/04/20/howto-retrieve-request-headers-using-isapi-asp-and-asp-net.aspx)详细介绍了为什么有必要.(摘要:CGI规范说"HTTP_"应该用破折号替换下划线,因此如果没有"HEADER_",解析"ALL_RAW"是获取名称中带下划线的变量的唯一方法.) (2认同)

Joe*_*sky 1

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