Chrome浏览器中协议相对URL方法无法使用

3

我喜欢在Stackoverflow上搜索答案,但这是我的第一篇文章。希望其他人也会发现这篇文章有用!

我有一个网站需要使用https,因为它托管了Facebook应用程序。我已经设置好了(专用IP和SSL证书),但当我通过https访问它时,我会收到以下警告:

此页面存在不安全内容。

我进行了一些研究,并发现这是一个常见问题。解决我们的内部文件并不是什么大问题,但我们严重依赖外部资源,比如jquery库(它是http而不是https)。我使用了协议相对URL方法(不能发布链接,因为我只能发布两个超链接,所以请参见下面的评论),这似乎适用于很多人。然而,当我在Chrome中进行更改时,我仍然会收到这个警告:[blocked] The page at https://www.greetfeet.com/ ran insecure content from http://code.jquery.com/mobile/1.1.0/jquery.mobile.structure-1.1.0.min.css

如果我遇到这个问题,我只能假设我的客户也会遇到同样的问题。有什么办法可以解决这个问题吗?

谢谢!


在此发现了协议相对URL方法:http://blog.httpwatch.com/2010/02/10/using-protocol-relative-urls-to-switch-between-http-and-https/ - Jeremiah Prummer
2
如果您的网站必须使用HTTPS,则“协议相对URL”方法不相关。您将无法在HTTPS页面上加载不安全的脚本/样式表,因此必须找到解决方法,例如自行托管它们。 - gengkev
@gengkev 感谢你的帮助!我读到的东西说你可以像 https 一样引用它,但显然这并不起作用。 - Jeremiah Prummer
2个回答

2

谷歌在 HTTP 和 HTTPS 上都托管了常用库(包括 jQuery 和 jQueryUI),例如:

https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js

(尽可能使用此方法,因为您的用户可能已经将其存储在其浏览器缓存中,从而使您的网站加载更快。)

除非可靠地通过 HTTPS 对公众开放,否则您可能需要自己托管其他内容。

仅当您的站点有些人使用 HTTP 访问,有些人使用 HTTPS 访问时才需要协议相对 URL:将资源引用“协议相对”将使人们使用检索引用页面时所使用的相同协议请求该资源。如果您的站点仅支持 HTTPS,则甚至不需要使用协议相对 URL,您可以在任何地方硬编码 https://。但这并不会影响,因此您仍然可以使用它。


点赞是展示你的感激之情的好方式 :-) 很高兴我能帮到你。 - Szocske

-1
一个指向 JQuery 的 https URL?如果它不能工作,问题可能出现在网站上,而不是你的代码。如果该网站发送带有 http: URL 的页面,非相对路径,并且你通过 https 访问它,那么你就会涉及到混合内容检索。要么不访问这些网站,要么不使用 HTTPS。

谢谢您的回复,但我只是举例而已。有很多网站根本没有https,唯一访问它们资源的方式就是使用http。您知道如何解决这个问题吗? - Jeremiah Prummer
@JeremiahPrummer 你无法修复它。问题在网站上,而不是你的代码中。如果该网站发送包含 http: URL 的页面(非相对路径),而你通过 https 访问它,则会涉及混合内容检索。要么不访问这些网站,要么不使用 HTTPS。 - user207421
1
@downvoter 除非你想让你的负评被视为纯粹的网站破坏行为,否则你有责任解释你认为这个答案有什么问题。 - user207421
@EJP 咳咳... - Museful

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