Javascript Javscriptencode用于谷歌分析的Url路径

Javascript Javscriptencode用于谷歌分析的Url路径,javascript,asp.net-mvc,google-analytics,xss,Javascript,Asp.net Mvc,Google Analytics,Xss,我尝试将参数trackPageview传递给Google Analytics 我现在用 _gaq.push(['_trackPageview', <%=AntiXss.JavaScriptEncode(Url.RequestContext.HttpContext.Request.Path ) %> ]) 我应该如何处理正斜杠?在Google Analytics中“\x2”显示是否正常?还是将\x2替换为正斜杠保存 _gaq.push(['_trackPageview', <%

我尝试将参数trackPageview传递给Google Analytics

我现在用

_gaq.push(['_trackPageview', <%=AntiXss.JavaScriptEncode(Url.RequestContext.HttpContext.Request.Path ) %> ])
我应该如何处理正斜杠?在Google Analytics中“\x2”显示是否正常?还是将\x2替换为正斜杠保存

_gaq.push(['_trackPageview', <%=AntiXss.JavaScriptEncode(Url.RequestContext.HttpContext.Request.Path).Replace("\x2","/") %> ])
\u gaq.push([''u trackPageview',])
编辑:


我不能使用
\u gaq.push([''u trackPageview'])
不带path参数,因为原始路径包含我不想跟踪的语言(/de/home/index需要作为/home/index进行跟踪)

您实际上不需要
\u trackPageview
的第二个参数。默认情况下,它将记录当前url(包括查询参数)。任何给定页面上的url都是从
document.location
中组合/获取的

其他解决办法:
  • 您刚才提到的
    replace
    解决方案实际上已经足够好了
  • 将\x2f留在路径中,它不会伤害眼睛/大脑以外的任何东西
  • 您是否可以在纯javascript中使用
    document.location
    document.location.pathname
    ?我猜URL的查询或散列部分是XSS攻击唯一需要担心的问题
  • 转义路径,而不是通过将其包装为字符串和转义引号对其进行编码。你也可以去掉任何引号
  • 不要对路径进行编码,它很可能很好(除非它未经过消毒,并且来自您的用户数据);而只是对查询和散列进行编码

    • 我倾向于使用JavaScript解决方案。尝试切片数组以删除语言前缀,并加入以合并路径:

      pathnameArray = document.location.pathname.split('/').slice(2);
      _gaq.push(['_trackPageview'], '/' + pathnameArray.join('/'));
      

      不传递参数路径是一个很好的解决方案。但我必须摆弄它(见我的编辑)。是的,我认为摆弄是不可能的。然而,它只是使用javascript的build document.location函数。你应该打开chrome的控制台,把它弄得一团糟。或者,使用服务器端代码也不错。然而,它确实迫使你将谷歌分析留在你的html页面上。
      pathnameArray = document.location.pathname.split('/').slice(2);
      _gaq.push(['_trackPageview'], '/' + pathnameArray.join('/'));