javascript - Safari 中的 Google Adsense、CORS 和 Rails 转储了数千个控制台错误

标签 javascript ruby-on-rails cross-domain adsense

我在 SSL 网站上成功转换谷歌广告,通过 rack-cors 正确设置了 CORS header (并且完全开放)作为:

Rails.configuration.middleware.insert_before 0, Rack::Cors do
  allow do
    origins  '*'
    resource '*', headers: :any, methods: :any
  end
end

我可以通过 curl 调用确认 header 在那里:

$ curl -I https://viewing.nyc -H "Origin: https://foobar.com"
...
Access-Control-Allow-Origin: https://foobar.com
Access-Control-Allow-Methods: GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS
Access-Control-Max-Age: 1728000
...

如果您在 Chrome 或 Firefox 中访问,控制台中没有跨站点脚本错误,但在 Safari 上,有数千个。

Blocked a frame with origin "https://googleads.g.doubleclick.net" from accessing a frame with origin "https://viewing.nyc". Protocols, domains, and ports must match.

Live example

我已经浏览了 rack-cors 问题页面,到目前为止还没有解决方案。为什么这种情况仅在 Safari 上发生,我该如何解决?

最佳答案

我认为添加 content-security-policy header 应该对您有所帮助。

add_header Content-Security-Policy: script-src 'self' https://googleads.g.doubleclick.net

在这里阅读更多:-

https://developers.google.com/web/fundamentals/security/csp/

关于javascript - Safari 中的 Google Adsense、CORS 和 Rails 转储了数千个控制台错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40342649/

相关文章:

ruby-on-rails - 如何创建自定义 Rails 生成模型函数?

ruby-on-rails - 如果使用 Ruby on Rails 在 redis 中存在,我如何更新 HKEYS 字段

ruby-on-rails - Rails - 用户名小写验证

javascript - 你如何正确地 promise 请求?

javascript - 如何从主要对象创建新的对象数组

javascript - 我正在尝试在我的 JavaScript 代码中正确实现 CORS,并且它工作了一段时间,我相信我丢失了项目中的某些文件?

jquery - 使用 Phantomjs/Jquery 发送跨域 GET 请求服务器端

javascript - 无法使用 javascript 解决 No 'Access-Control-Allow-Origin' 错误

javascript - 单击(单击)时 Angular 6 更改最近的图标

javascript - 带有 location.href 的按钮在 Firefox 中不起作用