我有一个用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
此外,我希望获得一个自定义用于我们的企业身份验证。
答案 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>