Řešení odepřeno oprávnění IFRAME

Nedávno jsem spouštěl svůj vlastní skript pro nahrávání AJAX, odeslal jsem formulář do skrytého prvku IFRAME a pomocí události zatížení jsem věděl, kdy bylo nahrávání dokončeno. Když bylo nahrávání dokončeno, chtěl jsem získat přístup k obsahu IFRAME, abych mohl ověřit, že nahrávání proběhlo úspěšně. Překvapivě jsem narazil na následující chybu JavaScript:

Error: Permission denied to access property 'document'

Pokud jste používali jQuery, může se vám místo toho zobrazit tato chyba:

Error: Permission denied to access property 'nodeType'

To mě zmátlo, protože jsem věděl, že můj IFRAME přistupuje k adrese na stejném hostiteli, včetně protokolu. Poté, co jsem si vytrhl vlasy a poslal prosbu o nápady na Twitter, Daniel Buchner zmínil záhlaví na straně serveru, které jsem potřeboval upravit, aby umožňoval přístup k uzlům tohoto rámce:x-frame-options . Záhlaví může mít hodnoty NONE nebo SAMEORIGIN a nastavení x-frame-optionsSAMEORIGIN opraven můj problém!

Pokud se vám bude i nadále zobrazovat chyba „Oprávnění odepřeno“, je velmi možné, že se pokoušíte provést požadavek napříč původem, a to vám jednoduše neumožní přístup k obsahu IFRAME, pokud nebyla přidána konfigurace CORS.