Как исправить «Заблокирован фрейм с источником» https://example.org" от доступа к фрейму перекрестного происхождения ». - PullRequest
0 голосов
/ 24 сентября 2019

Для личного использования я пытаюсь показать https://maps.google.com внутри фрейма.Примечание. Я НЕ хочу использовать Google Embed API.

Вот что я сделал:

  • используйте расширение Chrome для удаления следующих заголовков запроса: X-Frame-Options, Access-Control-Allow-Origin, Access-Control-Allow-Methods
  • вместо этого добавьте эти заголовки: Access-Control-Allow-Methods: *, Access-Control-Allow-Origin: *, Content-Security-Policy: frame-ancestors *;
  • вышеописанное делается для ВСЕХ заголовков запросов на ВСЕХurls (browser.webRequest.onHeadersReceived.addListener в моем расширении), это супер разрешительно, но сейчас я просто пытаюсь заставить его работать.

Теперь я пытаюсь сделать <iframe src=" https://maps.google.com" />.

Это работает наполовину:

  • Я вижу, что Google Maps показывает на моем iframe
  • Но есть постоянный текст "Загрузка ..." внизу, и я не могунажмите на маркеры или выполните поиск (см. снимок экрана ).
  • В консоли появляется следующая ошибка:
Blocked autofocusing on a form control in a cross-origin subframe.
maps:13 Uncaught DOMException: Blocked a frame with origin "https://www.google.com" from accessing a cross-origin frame.
    at Object._.Hr (https://www.google.com/maps/_/js/k=maps.m.en.dc5HEiFGHqQ.O/m=sc2,per,mo,lp,ti,ds,stx,bom,b/rt=j/d=1/rs=ACT90oFcxIV8Ad7kvBMCB_zNoSobKCZYEw:210:51)
    at /maps/_/js/k=maps.m.en.dc5HEiFGHqQ.O/m=vwr,vd,a,owc,ob,sp,en,smi,sc,vlg,log,smr,as,wrc/rt=j/d=1/ed=1/exm=sc2,per,mo,lp,ti,ds,stx,bom,b/rs=ACT90oFcxIV8Ad7kvBMCB_zNoSobKCZYEw:3599:3
    at /maps/_/js/k=maps.m.en.dc5HEiFGHqQ.O/m=vwr,vd,a,owc,ob,sp,en,smi,sc,vlg,log,smr,as,wrc/rt=j/d=1/ed=1/exm=sc2,per,mo,lp,ti,ds,stx,bom,b/rs=ACT90oFcxIV8Ad7kvBMCB_zNoSobKCZYEw:4990:3
    at NLa (https://www.google.com/maps/_/js/k=maps.m.en.dc5HEiFGHqQ.O/m=sc2,per,mo,lp,ti,ds,stx,bom,b/rt=j/d=1/rs=ACT90oFcxIV8Ad7kvBMCB_zNoSobKCZYEw:1677:132)
    at LLa.next (https://www.google.com/maps/_/js/k=maps.m.en.dc5HEiFGHqQ.O/m=sc2,per,mo,lp,ti,ds,stx,bom,b/rt=j/d=1/rs=ACT90oFcxIV8Ad7kvBMCB_zNoSobKCZYEw:1676:469)
    at IIa.f [as H] (https://www.google.com/maps/_/js/k=maps.m.en.dc5HEiFGHqQ.O/m=sc2,per,mo,lp,ti,ds,stx,bom,b/rt=j/d=1/rs=ACT90oFcxIV8Ad7kvBMCB_zNoSobKCZYEw:1561:184)
    at RIa (https://www.google.com/maps/_/js/k=maps.m.en.dc5HEiFGHqQ.O/m=sc2,per,mo,lp,ti,ds,stx,bom,b/rt=j/d=1/rs=ACT90oFcxIV8Ad7kvBMCB_zNoSobKCZYEw:1556:332)
    at eJa (https://www.google.com/maps/_/js/k=maps.m.en.dc5HEiFGHqQ.O/m=sc2,per,mo,lp,ti,ds,stx,bom,b/rt=j/d=1/rs=ACT90oFcxIV8Ad7kvBMCB_zNoSobKCZYEw:1565:43)
    at vA.Ma (https://www.google.com/maps/_/js/k=maps.m.en.dc5HEiFGHqQ.O/m=sc2,per,mo,lp,ti,ds,stx,bom,b/rt=j/d=1/rs=ACT90oFcxIV8Ad7kvBMCB_zNoSobKCZYEw:1564:405)
    at mb (https://www.google.com/maps/_/js/k=maps.m.en.dc5HEiFGHqQ.O/m=sc2,per,mo,lp,ti,ds,stx,bom,b/rt=j/d=1/rs=ACT90oFcxIV8Ad7kvBMCB_zNoSobKCZYEw:1563:293)

Любые идеи о том, что я могпопробуйте затем сделать эту работу?Или это просто невозможно?

1 Ответ

1 голос
/ 24 сентября 2019

Краткий ответ: Это невозможно сделать.

Длинный ответ: X-Frame-Options определяется на сервересторона.Это означает, что тот, кто открывает страницу, не решает, можно ли открыть документ в iframe, вместо этого решает его автор.В данном случае это Google.

Я пытался добиться того же самого в обратном направлении с помощью поиска Google, когда вы вводите слово в текстовое поле, а при нажатии на кнопку подтверждения выдается iframe с результатами Google.Я провел небольшое исследование и узнал, что это невозможно, поскольку Google не позволяет различным источникам отображать свои страницы.

Вот почему у них есть API.

Подробнее об этом - Как показать google.com в iframe?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...