2012-04-27 24 views
1

我有一個網站,寫在VBSCRIPT,我正在轉移到VB.NET。在我有時間重寫某些頁面/應用程序之前,我想更新一些代碼,以便它們工作得更好一些。我正嘗試在VBSCRIPT頁面上抓取一個服務器變量,其中包含我們來自企業登錄名的用戶名。vbscript不檢索所有服務器變量

我在這裏有兩個測試頁面,一個語言爲「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收集所有服務器變量的正確信息嗎?

謝謝

編輯:這是
AUTH_USER,REMOTE_USER是VB和VBS之間變化的變量 - 登錄用戶的VBS,iis_anon VB的
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

看到這個:http://www.w3schools.com/asp/coll_servervariables.asp – HK1 2012-04-27 20:32:26

+0

是它沒有數據,或者只有一些變量的所有變量?有什麼方法可以給我們提供樣品(如果需要,可以進行消毒)? – 2012-04-28 05:14:08

回答

1

這裏是一個經典的ASP頁面,我在各種IIS版本上運行。 對於用戶,我在我的大部分項目中都使用戶信息可用於服務器和客戶端。如果你在一個域上用你的替換DMAIN,否則你可以刪除替換。 NTLM安全性必須在IIS站點上啓用(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> 

這裏

<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> 
2

我之前有在生頭名下劃線(可在ALL_RAW服務器變量可以看到自定義HTTP標頭有這個問題servervariables.asp的內容)。所述HTTP_轉換下劃線來破折號(例如,HTTP_USER_AGENT對應於稱爲User-Agent實際標頭)。爲了檢索名稱中包含下劃線的任何標題的值,你必須使用HEADER_前綴,這將對於確切的標題名稱進行搜索(例如,HEADER_USER_AGENT將搜索名爲User_Agent頭)。

順便說一句,this blog post提供上爲什麼有兩個前綴一些更多的背景信息。