1

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

我这里有 2 个测试页面,一个顶部是 language="VB",另一个是 language="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>

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

谢谢你


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

The following are listed in VBS, but have no data
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
Also there is a custom on I wish to get that is used for our enterprise authentication.

4

2 回答 2

2

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

顺便说一句,这篇博文提供了更多关于为什么有两个前缀的背景信息。

于 2012-05-01T05:22:42.647 回答
1

这是我在各种 IIS 版本上运行的经典 ASP 页面。对于用户,我在我的大多数项目中都有这个,这使得用户信息在服务器和客户端可用。如果您在域中,请将 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>
于 2012-04-30T12:40:40.723 回答