来自Google Adsense的Javascript错误

Arj*_*jun 79 javascript adsense

在我的几个adsense运行网站上,我遇到了以下错误:

无法将消息发布到[ http://] googleads.g.doubleclick.net.收件人来源 http://www.anekdotz.com.

不安全的JavaScript尝试使用URL [ http://] www.anekdotz.com/从URL [ http://] googleads.g.doubleclick.net/pagead/ads?client=ca-pub-9099580055602120&output=访问框架HTML&H = 250&广告位名称= 9210181593&W = 300&闪光= 10.0.42&URL = HTTP%3A%2F%2Fwww.anekdotz.com%2F&DT = 1269901036429&相关= 1269901036438&FRM = 0&ga_vid = 711000587.1269901037&ga_sid = 1269901037&ga_hid = 654061172&ga_fc = 0&u_tz = -240&u_his = 2&u_java = 1&u_h = 900&u_w = 1440&u_ah = 878&u_aw = 1436&u_cd = 24&u_nplug = 10&u_nmime = 101&biw = 1365&bih = 806&eid = 44901212&fu = 0&ifi = 1&dtd = 153&xpc = Xkfk1oufPQ&p = http%3A // www.anekdotz.com. 域,协议和端口必须匹配.

(来自Chrome javascript控制台)

广告似乎正确显示,它不会影响我的原生javascript代码.但是,有时这些错误似乎会减慢页面加载速度.我该如何解决这个问题?

(我修改了网址,让我发布这个,因为我是新用户)

bob*_*nce 79

谷歌搞砸了他们的剧本.你无能为力.

出于某种原因http://pagead2.googlesyndication.net/pagead/expansion_embed.js,AdSense脚本包含在父页面中,尝试<iframe>使用新的HTML5 postMessage工具将有关广告的信息发送到新创建的广告中以保存广告:

            ha(this, function (f, e) {
                d[Pa](this.a[A]+"|"+f+":"+e, this.la)
            });
Run Code Online (Sandbox Code Playgroud)

是啊.那里有一些很好的缩小/混淆代码.相信我,Pa'postMessage'!

targetOrigin此调用中的参数this.la设置为http://googleads.g.doubleclick.net.但是,新的iframe是在src设置为的情况下编写的about:blank.这与目标原点不匹配,因此浏览器必须拒绝发送消息.但是,只有Chrome似乎会在控制台日志中丢掉一个实际的抱怨.

根本不知道为什么它会这样做,更不用说为什么它不仅仅是'*'用作目标来源......我真的不喜欢涉足混淆的脚本以找出答案.但是,此错误不应导致页面加载速度变慢.如果你看到暂停,它通常会解析并获取其他外部脚本.

  • 我也有这个错误,特别是任何缓慢,但我意识到它正在使其他JS停止工作,如fb社交应用程序集成.我想知道这个问题到底是怎么回事. (4认同)

tho*_*ter 14

谷歌试图利用浏览器的怪癖,一些浏览器忽略了Windows的同源策略,其中包含:空白作为URL,允许该窗口提交XMLHttpRequest,或者在这种情况下,将postMessage请求提交给任何站点.

据我所知,浏览器最近一直禁用此行为.你必须有一个这样的补丁浏览器.

希望这个破碎的功能不会影响您从广告中赚钱的能力.

由于您的网站没有自己的错误而导致Javascript错误,这很烦人,但是当您在页面上运行其他人的Javascript时,您必须接受这种错误.


ris*_*dar 7

这是正常的,因为您的浏览器会阻止来自其他网站的CSRF攻击.

要允许googleads...访问您的网站并解决此问题,请创建一个crossdomain.xml在您的webroot中命名的文件,并使用以下内容填充它:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy 
  SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <allow-access-from domain="googleads.g.doubleclick.net" />
</cross-domain-policy>
Run Code Online (Sandbox Code Playgroud)

要测试它,请访问您的域http://your-domain.com/crossdomain.xml并确保该页面没有错误.您还允许使用通配符等(请参阅参考资料).完成后,刷新页面.希望有所帮助.

实例:http: //www.blanjamudah.com/crossdomain.xml

参考:http : //en.wikipedia.org/wiki/Cross-site_request_forgery http://curtismorley.com/2007/09/01/flash-flex-tutorial-how-to-create-a-crossdomainxml-file/