1

VBSCRIPTで記述されたWebサイトがあり、VB.NETに移行しています。いくつかのページ/アプリケーションを書き直す時間があるまで、コードのいくつかを更新して、それらが少し良く機能するようにしたいと思います。エンタープライズログインからのユーザー名を含むVBSCRIPTページでサーバー変数を取得しようとしています。

ここには2つのテストページがあります。1つは上部にlanguage="VB"があり、もう1つは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>

VBSCRIPTページには、VBページとALL_HTTPにデータがある場合、データのない変数が一覧表示されます。VBSCRIPTにすべてのサーバー変数の正しい情報を収集させる方法はありますか?

ありがとうございました

編集:これらは、VBとVBSの間で異なる変数です
。AUTH_USER、REMOTE_USER-VBSにログインしているユーザー、VBに
iis_anonREMOTE_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
また、私は私たちの企業の認証に使用されていることを取得したいのカスタムがあります。

4

2 に答える 2

2

以前、生のヘッダー名にアンダースコアが含まれるカスタムHTTPヘッダーでこの問題が発生しました(ALL_RAWサーバー変数で確認できます)。アンダーHTTP_スコアをダッシュ​​に変換します(たとえば、HTTP_USER_AGENTと呼ばれる実際のヘッダーに対応しUser-Agentます)。名前にアンダースコアが含まれているヘッダーの値を取得するには、HEADER_プレフィックスを使用する必要があります。これにより、正確なヘッダー名が検索されます(たとえば、HEADER_USER_AGENTと呼ばれるヘッダーが検索されますUser_Agent)。

ちなみに、このブログ投稿では、プレフィックスが2つある理由に関する背景情報をいくつか提供しています。

于 2012-05-01T05:22:42.647 に答える
1

ここでは、さまざまな IIS バージョンで実行している従来の ASP ページを示します。ユーザーの場合、ほとんどのプロジェクトでこれを使用して、サーバーとクライアント側でユーザー情報を利用できるようにします。ドメインを使用している場合は、DMAIN を自分のものに置き換えます。それ以外の場合は、置き換えを削除できます。IIS サイトで NTLM セキュリティを有効にする必要があります (Windows 認証)。匿名アクセスは不可です。このコードによって返されるサーバー変数のリストは、OS と 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 に答える