2015-09-07 15 views
12

Poniższy problem występuje na urządzeniach z Androidem 4.4 lub nowszym.Błąd bezpieczeństwa z iframe

To właśnie nasza iframe wygląda następująco:

<iframe frameborder=0 id="myIFRAME"></iframe> 

Poniżej przedstawiono sposób jesteśmy coraz iframe programowo:

if(document.getElementById("myIFRAME")){ 
     me.setMyIFRAME(document.getElementById("myIFRAME").contentWindow); 
} 

Jest to przyczyną błędu bezpieczeństwa związanych z protokołem niezgodności:

"Uncaught SecurityError: Blocked a frame with origin " https://www.google.com " from accessing a frame with origin "file://". The frame requesting access has a protocol of "https", the frame being accessed has a protocol of "file". Protocols must match.

Używamy Sencha touch z Cordova do opracowania naszego projektu.

Odpowiedz

0

Okazało się, że był iframe ładuje stronę html który dostępem window.document który powodował błąd zabezpieczeń między domenami poniżej, jeśli stan był wewnątrz stronie

if (window.parent.document != window.document) 

możemy go zmienić na poniżej warunku, który rozwiązuje błąd bezpieczeństwa:

if (window.parent != window) 
+0

Gdzie muszę to wykorzystać – Vishnu

4

Cordova security guide mówi:

If content is served in an iframe from a whitelisted domain, that domain will have access to the native Cordova bridge.

Czy próbowałeś dodanie domeny zewnętrznej to the whitelist wewnątrz config.xml?

<access origin="https://google.com" /> 
+0

Próbowałem już to ustawić.Ale nie pomogę z tym – Ritika

0

@Ritika,
Biorę dziką przypuszczenie tutaj, bo nie używam iframe, ale w swoim elemencie nie widzę się src. Jako taki, system ustawia go na pewien typ wartości domyślnej, a protokół tego źródła jest file://

Myślę, że jeśli ustawisz src=, nawet pustą, problem zniknie.

Away, tylko zgadnij. Powodzenia.

+0

src jest dynamicznie tworzone w kodzie, a następnie jest ostatecznie ustawione na iframe.Even próbowałem początkowo ustawić src = '', ale to nie pomogło – Ritika

+0

Okay, Shot in the dark. Czy używasz * białej listy *, wtyczki i CSP? – JesseMonroy650

+0

Próbowałem używać whie-list, to też nie pomaga – Ritika

0
  1. Google nie jest dostępny na iFrame.

  2. Ze strony obsługiwanej przy użyciu protokołu file:// protokół nie może domyślnie uzyskać dostępu do zasobów przez protokół http:// lub https://.

Powiązane problemy