1

ほとんどの場合、正常に動作する次の JavaScript があります。サイトにログインしたユーザーを取得し、DOMAIN\username 情報を返します。この問題は、ユーザー名が有効なエスケープ文字を補完する文字で始まる場合に発生します (例: DOMAIN\fname)。\f が補間され、あらゆる種類の恐ろしいことが起こります。「\」を置換および/またはエスケープ/エンコードするために、あらゆる種類の回避策を試しました。問題は、\f が処理/照合できるように見えないことです。操作される文字列は「DOMAINname」です

// DOMAIN\myusername - this works fine
// DOMAIN\fusername  - fails
var userName='<%= Request.ServerVariables("LOGON_USER")%>';
    userName = userName.replace('DOMAIN','');
    alert("Username: " + userName);

また、userName 変数を使用して回避策を実行しようとすると、あらゆる種類の奇妙な動作が見られます。これは、隠し \f が含まれていることが原因であると考えられます。私は解決策を高低で検索しましたが、何も見つかりません。サーバー側で DOMAIN\ を削除できるかどうかを調べようとしましたが、それも利用できないようです。誰かが解決策または回避策を持っていますか? デバッガーでは、サーバー変数の初期値は正しいですが、その変数への次の即時呼び出しは間違っています。したがって、デバッガーで補間された値は次のようになります。

var userName='DOMAIN\fusername';
userName; // 'DOMAINusername' in debugger.

ありがとう

4

1 に答える 1

0

ASP.net を使用している場合 (実際のように見えます)、AjaxHelper.JavaScriptStringEncodeorHttpUtility.JavaScriptStringEncodeを使用して文字列を正しく出力してください。

var userName='<%= HttpUtility.JavaScriptStringEncode(Request.ServerVariables("LOGON_USER"))%>';
于 2014-02-13T15:32:07.923 に答える