请求访问的框架协议为“https”,被访问的框架协议为“http”。协议必须匹配。

11

我遇到了这个错误:

未捕获的SecurityError: 阻止了一个来自 "https://lss-servicedesk.techteam.com" 的框架访问一个来自 "http://mydomain.com" 的框架。
请求访问的框架的协议为"https",正在被访问的框架的协议为"http"。 协议必须匹配。

<FORM ACTION=https://lss-servicedesk.techteam.com/CAisd/pdmweb.exe METHOD=POST onsubmit="return checkform(this);">

有没有方法来避开这个问题?先谢谢了...


1
解决方案是从您的域名运行SSL,或通过不安全的http获取其内容(如果它们支持)。 - Jamie Taylor
你在什么时候遇到了那个错误?是在HTML解析的时候吗? - Bergi
我在您发布的 HTML 中没有看到任何引用框架的内容。 - Barmar
2个回答

6
你这里出现了两个错误。第一个是跨域问题,你无法修复它。你的网站根本不可能访问加载的iframe的网站,在任何情况下都不行。否则,浏览器会非常不安全,只需加载一个iframe,就能让一个网站轻松获取用户在另一个网站上的设置。因此,你不能在iframe内部更改任何内容。你唯一能对iframe内容做的事情就是 iframeElement.src = '//otherurl.com'; ,即更改iframe的源URL。
要解决第二个问题,你可以采取以下步骤:在脚本或表单中定义URL时,可以使用//而不是http://https:// 。这样,它将自动“填入”与你当前使用的协议相同的协议。因此,如果你现在使用的协议是http://,那么它将在http://中加载iframe,反之亦然。

4
请注意,使用协议相对URL需要Iframe源页面实际上支持http和https请求。 - Christofer Eliasson
2
'://etc.etc' 对于协议相对 URL是否有效?我看到的都是以'//etc.etc'的形式出现。即使两种风格都可以使用,为了保持一致性和熟悉感,我认为我会推荐使用后者。 - Michael Geary
一个http网站无法显示https iframe的理由是什么?这似乎只发生在Safari浏览器上,而且根本没有任何意义...在安全页面中防止不安全内容是有道理的;但在不安全页面中防止安全内容则没有意义。 - El Yobo
@ElYobo 或许这是软件的限制。也许它无法在从不安全页面显示时启动安全连接,因为页面和其子 iframe 之间存在某种形式的通信。如果父页面可以对子 iframe 进行任何操作,那就存在安全风险。这只是一个猜测,但我认为这可能与为什么不允许在 http 中使用 https 有关。 - Joeytje50

0

我曾经遇到过两个不同的域名都指向我的Web服务器的问题。它们的DNS设置都将domain.com(没有www)重定向到http://www.domain.com。其中一个域名出现了类似于你的问题,但后来发现这是由于我们将FRAME设置为“是”的DNS错误导致的。将FRAME设置为“否”后,解决了两个问题(框架错误和http/https错误)。虽然这只是一个小问题,但它却导致了完全相同的错误,所以我想提及它作为其他人可能会遇到的另一种可能性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接