1

我在使用 Javascript 和 ASP 时遇到了关于 HTML 页面上的字符串输出的问题。页面生成的逻辑是这样的:

  1. 我们使用 .asp 页面生成 HTML 代码Response.Write()。如果字符串包含数字字符引用(例如С),它将在用户端显示为字符。

  2. 之后我们添加OnLoad事件,它需要一个 Javascript 函数。所有这些都发生在<body><\body>标签内。在标签内添加了 JavaScript 的源<script></script>代码。该函数仅添加document.href,其中包含对同一 asp 页面的引用。

  3. 再次加载 asp 逻辑并向页面添加一些文本Response.BinaryWrite()(Response.Write 可以完全一样使用)所有字符引用都显示为代码:&#1057;。显然所有的'&'符号都变成了&amp;(asp自动转换),浏览器将其解码为&,我们只能看到一个代码&#1057;而不是符号'С'。

据我所知,这种行为可能是由<script>标签引起的,以防止 xss 攻击。最后我想停止将 '&' 编码为&amp;.

然而,这是最重要的部分:

如果我添加带有“Content-Type”“text\html”的标题,IE(任何版本)开始以正确的方式编码 NCR 符号。但是 Firefox、Chrome 和 Safari 不会改变行为并保持编码 & as &amp;。我可以在 Stack Overflow 上看到几个看起来像我的问题,但情况并不完全相同(我的字符串不是由 JavaScript 直接插入的,所以我无法操作输出字符串并更改&amp;为 &,而且我的字符串在首先,它们被asp或浏览器改变)。有什么优雅的方法可以强制 Firefox 或 Chrome 将页面解码为 IE?也许 HTML 标签中的一些设置或属性?这个问题看起来取决于我的浏览器,对吗?

4

0 回答 0