调用JavaScript时在FireFox中使用IIS URLDirect进行多个重定向

调用JavaScript时在FireFox中使用IIS URLDirect进行多个重定向,javascript,firefox,url-rewriting,iis-7.5,Javascript,Firefox,Url Rewriting,Iis 7.5,我遇到的问题只发生在后来添加的Firefox中。我在fiddler中检查了常见的浏览器,它们正在运行 到目前为止的故事。。。。。我有一个网站,已经转移到一个新的托管提供商。网站内容(图像、音频等)过去使用IIS中的虚拟目录在内容共享上可用。对HTML内容的引用是通过相对路径完成的,例如“/images/pic.gif” 作为网站迁移的一部分,内容随后被移动到另一个URL上,因为我们不想将内容托管在web代码所在的服务器上。(原因多种多样,但并不影响此问题)。因此,我们不必重新指向所有现有的对内容

我遇到的问题只发生在后来添加的Firefox中。我在fiddler中检查了常见的浏览器,它们正在运行

到目前为止的故事。。。。。我有一个网站,已经转移到一个新的托管提供商。网站内容(图像、音频等)过去使用IIS中的虚拟目录在内容共享上可用。对HTML内容的引用是通过相对路径完成的,例如“/images/pic.gif”

作为网站迁移的一部分,内容随后被移动到另一个URL上,因为我们不想将内容托管在web代码所在的服务器上。(原因多种多样,但并不影响此问题)。因此,我们不必重新指向所有现有的对内容(图像、音频)的引用,我们使用了IIS URL Redirect()并在web.config中为应用程序设置了以下内容

<rewrite>
  <rules>
    <rule name="Images">
      <match url="^/?images/(.*)$" />
      <action type="Redirect" url="http://data.xxxx.com/images/{R:1}?ref=1" />
    </rule>
  </rules>
</rewrite>

重定向工作正常,因为图像引用的前缀为data.xxxx.com,并且图像在站点上显示良好。如果我们使用JavaScript向站点添加广告,例如

<script language="javascript">

if (window.adgroupid == undefined) {
window.adgroupid = Math.round(Math.random() * 1000);
}
document.write('<scr' + 'ipt language="javascript1.1" src="http://xxx.xxx.xxx/addyn/3.0/981/2185858/0/225/ADTECH;loc=100;target=_blank;key=key1+key2+key3+key4;grp=' + window.adgroupid + ';misc=' + new Date().getTime() + '"></scri' + 'pt>');
</script>

if(window.adgroupid==未定义){
window.adgroupid=Math.round(Math.random()*1000);
}
文件。写(“”);
…它使重定向发生两次

这只发生在Firefox中

如果我将javascript移动到图像调用下面,那么问题就不会发生

我尝试在javascript标记中使用defer=“defer”,但是广告不会显示在页面上

我查看了各种资源,看不出为什么会发生这种情况,除了javascript在页面中的位置之外,我们没有更改任何代码

我需要减少我们打给内容服务器的电话数量,因为我们是按每次通话收费的,所以任何多余的电话都会给我们带来经济损失


感谢您的帮助

您看到的问题是Firefox中的图像缓存并不能很好地处理重定向(可能您正在阻止HTTP级缓存)。因此,在等待脚本时启动的图像预取和实际图像加载最终都会影响网络


Boris,谢谢你。我已经查看了这个bug列表上的注释,我们正在为图像添加缓存控制。但是我想你是说Firefox7中应该有一个补丁。@Steve是的,补丁应该在Fx7中发布。谢谢你。你知道Fx7什么时候发货吗?9月27日。具有未来发布的日期。