Google Adsense, CORS и Rails в Safari выгружают тысячи консольных ошибок
Я пользуюсь объявлениями Google на сайте ssl успешно, причем заголовки CORS правильно установлены (и широко открыты) rack-cors
как:
Rails.configuration.middleware.insert_before 0, Rack::Cors do
allow do
origins '*'
resource '*', headers: :any, methods: :any
end
end
Я могу подтвердить, что в заголовках есть криволинейный вызов:
$ 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.
Живой пример
Я пролистал страницу проблем rack-cors
без решения, которое работает до сих пор. Почему это происходит только на Safari, и как я могу его исправить?
Ответы
Ответ 1
Я думаю, что добавление заголовков политики безопасности контента должно помочь вам.
add_header Content-Security-Policy: script-src 'self' https://googleads.g.doubleclick.net
Подробнее здесь: -
https://developers.google.com/web/fundamentals/security/csp/
Ответ 2
В этом разделе (последний ответ) указано, что он должен работать, несмотря на ошибки. Сафари чувствительна к таким различиям.
https://groups.google.com/forum/#!topic/ima-sdk/AxE9vZith00
пропущенные объявления не поддерживаются на устройствах iPhone и почему вы возникают проблемы с воспроизведением рекламы. Я бы предложил добавить дополнительные mimeTypes к вашему тегу, чтобы поддерживать варианты использования через все устройства.
Что касается ошибки, которую вы изначально испытывали, "Заблокировано a frame with origin" http://imasdk.googleapis.com "от доступа к frame with origin" http://xxx.xxx.xxx.xxx ". Протоколы, домены и порты должны совпадать.", мы видели эту ошибку раньше и, как вы заявили он не должен влиять на воспроизведение рекламы. Объяснение этой ошибки ограничение политики одного и того же происхождения, которое не разрешает одному домену из доступ к ресурсам из другого домена. Он блокирует Ресурсы Cross-Origin от совместного использования. Вы можете обновить свой CORS заголовки, как указано в нашей документации, чтобы разрешить перекрестное происхождение совместное использование.