Javascript保留\ f返回值

时间:2014-02-13 15:27:45

标签: javascript asp.net escaping request.servervariables

我有以下javascript,大部分工作正常。它会让用户登录该站点并返回其DOMAIN \用户名信息。当用户名以完成有效转义字符的字母开头时(例如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 \但似乎也没有。有没有人有解决方案或解决方法?在调试器中,servervariable的初始值是正确的,但是对该变量的下一次立即调用是错误的。因此调试器中的插值如下所示:

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

由于

1 个答案:

答案 0 :(得分:0)

如果你正在使用ASP.net(看起来像你),请使用AjaxHelper.JavaScriptStringEncodeHttpUtility.JavaScriptStringEncode正确输出字符串。

var userName='<%= HttpUtility.JavaScriptStringEncode(Request.ServerVariables("LOGON_USER"))%>';