使用Javascript和ASP时,HTML页面上的字符串输出有问题。页面生成的逻辑如下:
我们使用asp页面使用Response.Write()
生成HTML代码。如果字符串包含数字字符引用(例如С
),它将在用户一侧显示为字符。
之后我们添加OnLoad
事件,该事件需要Javascript函数。所有这些都发生在<body><\body>
标记内。在<script></script>
标记内添加的JavaScript源代码。该函数仅添加document.href
,其中包含对同一asp页面的引用。
asp逻辑再次加载并使用Response.BinaryWrite()
向页面添加一些文本(Response.Write可以全部使用)所有字符引用都显示为代码:С
。显然所有'&amp;'符号变为&
(asp自动转换),浏览器将其解码为&amp;我们只能看到代码С
而不是符号'С'。
据我所知,这种行为可能是由<script>
标签引起的,作为针对xss攻击的预防措施。最后我想停止编码'&amp;'为&
。
然而,这是最重要的部分:
如果我添加带有“Content-Type”“text \ html”的标题,IE(任何版本)都会以正确的方式开始编码NCR符号。但Firefox,Chrome和Safari不会改变行为并保持编码和为&
。我可以看到Stack Overflow上的几个问题看起来像我的,但情况并不完全相同(我的字符串不是由JavaScript直接插入的,所以我无法操纵输出字符串并将&
更改为&amp ;,也是我的字符串首先有正确的符号,它们可以通过asp或浏览器进行更改。是否有任何优雅的方式迫使Firefox或Chrome将页面解码为IE?也许HTML标签中有一些设置或属性?这个问题看起来像是依赖于我的浏览器,我是对的吗?