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