因此,我正在构建一个Chrome扩展程序,该扩展程序从当前选项卡中获取图像,并将这些图像发送到服务器以托管图像。它适用于许多网站,但在Instagram和Pinterest等主要网站上,由于浏览器阻止混合内容(HTTP和HTTPS),因此无法正常工作。我在控制台中收到以下错误消息:
Mixed Content: The page at 'https://www.instagram.com/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint. This request has been blocked; the content must be served over HTTPS.
我查看了这篇文章,它似乎没有帮助我解决有关扩展的问题:https://productforums.google.com/forum/#!topic/chrome/OrwppKWbKnc
另外,我尝试将服务器URL添加到manifest.json中的权限,这对我没有任何帮助。
我的问题是:我有没有办法让Chrome扩展程序只为我的服务器提供混合内容,或者是我将服务器切换到HTTPS的唯一选择?
答案 0 :(得分:8)
如果您从内容脚本发送http请求,因为它与网页位于同一上下文中,它将受SOP限制,这是浏览器行为。
您可以将您的http请求从content scripts
移至background page
(Message Passing或browser Action之类的其他触发器),因为background page
生活在扩展的上下文,而扩展本身可以通过向权限添加服务器URL来绕过SOP。