Подтвердить что ты не робот

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, и как я могу его исправить?

4b9b3361

Ответ 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 заголовки, как указано в нашей документации, чтобы разрешить перекрестное происхождение совместное использование.