代码之家  ›  专栏  ›  技术社区  ›  Tom Gruff

为什么Firefox在JavaScript代码中从IMG src请求虚假URL?

  •  4
  • Tom Gruff  · 技术社区  · 16 年前

    我在我的网站上发现以下URL的404错误:

    GET /%27%20+%20item.icon%20+%20%27 HTTP/1.1
    

    <script type="text/javascript">
      function foo(item) {
         return '<img src="' + item.icon + '">' : '';
      }
    </script>
    

    似乎只来自Windows上的FireFox 3.5/3.6,但我不能保证这一点。

    那么,为什么FF会请求这个URL呢?它是在尝试预加载图像还是什么?有什么建议可以阻止它吗?

    3 回复  |  直到 16 年前
        1
  •  6
  •   Benjamin Wohlwend    16 年前

    Firefox将您的代码解释为XHTML。尝试将您的代码放入 CDATA 像这样的部分:

    <script type="text/javascript">
    //<![CDATA[
      function foo(item) {
       return '<img src="' + item.icon + '">' : '';
      }
    //]]>
    </script>
    

    this page 有关此问题的更多信息。

        2
  •  2
  •   apinstein    16 年前

    我正在吃这个 准确的 同样的问题。

    我可以确认它也发生在Mac FF 3.6上。这是唯一的3.6版本。据IRC上的一些人说,即使是3.7 alpha也似乎有效,我已经尝试过了。

    我还可以确认CDATA技巧不起作用;我尝试了许多变化。我还尝试了不同的博士类型,等等。

    然而,我有一些运气在修复它。关键似乎是要杀了这个人 src= . 例如:

    var someHTML = '<img src="' + item.url + '" />';
    

    var someHTML = '<img s'+'rc="' + item.url + '" />';
    

    到目前为止,这似乎是有帮助的,但它还没有足够长的时间,我可以肯定。

    在我的情况下,这个问题尤其阴险;我有一个JSON字符串,其中包含20个URL,FF 3.6会在一瞬间请求所有20个URL(这是伪造的URL,但最终会到达同一页面),每次有人访问我的站点时,DoS都会在服务器上运行。

    这是FF中一个非常糟糕的错误。我认为很多网站管理员甚至还没有发现它正在发生,但我认为它正在造成广泛的问题。

        3
  •  1
  •   Tom Gruff    16 年前

    好的,结果是使用 CDATA

    推荐文章