vbscript没有检索所有服务器变量

时间:2012-04-27 17:10:00

标签: asp.net vb.net asp-classic vbscript server-variables

我有一个用VBSCRIPT编写的网站,我正在转向VB.NET。在我有时间重写某些页面/应用程序之前,我想更新一些代码,以便它们更好地工作。我试图在VBSCRIPT页面上获取一个包含我们企业登录用户名的服务器变量。

我这里有两个测试页面,一个在顶部使用language =“VB”,另一个语言是“VBSCRIPT”。

   <html xmlns="http://www.w3.org/1999/xhtml">
       <head runat="server">
           <title>Server Variables</title>
       </head>
       <body>
           <form id="form1" runat="server">
               <div>
                   <%
                       For Each var In Request.ServerVariables
                           Response.Write("<b>" + var + "</b>= " + Request.ServerVariables(var) + "<br />")
                       Next
                   %>
               </div>
           </form>
       </body>
   </html>

VBSCRIPT页面将列出在VB页面和ALL_HTTP中有数据时没有数据的变量。有什么方法可以让VBSCRIPT收集所有服务器变量的正确信息吗?

谢谢

编辑:这些是VB和VBS之间变化的变量 AUTH_USER,REMOTE_USER - 在VBS上登录用户,在VB上登录iis_anon REMOTE_PORT - 未在VBS中列出

以下内容列在VBS中,但没有数据
HTTP_SERVER_PROTOCOL
HTTP_SM_TRANSACTIONID
HTTP_SM_CLIENT_IP
HTTP_REQUEST_METHOD
HTTP_SM_SDOMAIN
HTTP_SM_REALM
HTTP_SM_REALMOID
HTTP_SM_AUTHTYPE
HTTP_SM_AUTHREASON
HTTP_SM_UNIVERSALID
HTTP_SM_AUTHDIROID
HTTP_SM_AUTHDIRNAME
HTTP_SM_AUTHDIRSERVER
HTTP_SM_AUTHDIRNAMESPACE
HTTP_SM_USER
HTTP_SM_USERDN
HTTP_SM_SERVERSESSIONID
HTTP_SM_SERVERSESSIONSPEC
HTTP_SM_TIMETOEXPIRE
HTTP_SM_SERVERIDENTITYSPEC
HTTP_REMOTE_USER
此外,我希望获得一个自定义用于我们的企业身份验证。

2 个答案:

答案 0 :(得分:2)

我之前遇到过这个问题的自定义HTTP标头在原始标头名称中有下划线(可以在ALL_RAW服务器变量中看到)。 HTTP_将下划线转换为短划线(例如,HTTP_USER_AGENT对应于名为User-Agent的实际标头。为了检索名称中包含下划线的任何标头的值,您必须使用HEADER_前缀,该前缀将搜索确切的标头名称(例如,HEADER_USER_AGENT将搜索名为的标头User_Agent)。

顺便说一句,this blog post提供了有关为什么有两个前缀的更多背景信息。

答案 1 :(得分:1)

这是我在各种IIS版本上运行的经典ASP页面。 对于用户,我在大多数项目中都有这个,这使得userinfo在服务器和客户端可用。如果您在域中用您的DMA替换DMAIN,否则您可以删除替换。 必须在IIS站点上启用NTLM安全性(Windows身份验证),无需匿名访问。 此代码返回的servarvariables列表根据操作系统和IIS版本,启用的功能,设置等而有所不同。某些键将具有空值,因此例如REMOTE_PORT不可用(我使用标准80端口)但SERVER_PORT是。

<%
  Dim user
  user = Replace(uCase(Request.ServerVariables("AUTH_USER")), "DOMAIN\", "")
%>
  <script type="text/javascript">var user = <%=user%></script>

这里是servervariables.asp的内容

<html>
<%@language=VBScript%>
<%
  With Response
    .Expires=-1
    .Clear
  End With
  dim teller
  response.write "<h1>Servervariables</h1>"
  response.write "<table>"
  teller = 1
  for each subkey in Request.Servervariables
    response.write "<tr><td>"
    response.write teller
    response.write "</td><td>"
    response.write (Request.Servervariables.Key(teller))
    response.write "</td><td>"
    response.write (Request.Servervariables.Item(teller))
    response.write "</td></tr>"
    teller = teller + 1 
  next
  response.write "</table>"
  response.write request.servervariables("path_translated") & "<br>"
  response.write "USER cookie:" & Request.Cookies("USER") & "<br>"
  response.write "USER Sessionvariable:" & Session("USER") & "<br>"
%>
</html>