URL 开头有双斜杠?

bug*_*syb 0 javascript css url font-face google-chrome-extension

我目前正在开发一个 chrome 扩展,它允许我下载网页上使用过的字体文件。

\n

当我解析该网站的字体时,我遇到了其中一个字体 URL 的奇怪边缘情况。

\n

对于字体,Freddy规则@font-face如下所示:

\n
@font-face {\nfont-family: \'Freddy\';\nsrc: url("//cdn.shopify.com/s/files/1/0548/8708/8184/t/24/assets/freddy_regular_2-webfont.woff?v=147712666987587936441646682936") format("woff") , \n  url("//cdn.shopify.com/s/files/1/0548/8708/8184/t/24/assets/Freddy_Regular_2.ttf?v=64870238297763773461646682938") format("truetype") , \n  url("//cdn.shopify.com/s/files/1/0548/8708/8184/t/24/assets/freddy_regular_2-webfont.woff2?v=66678714148373221751646682937") format("woff2"); /* Safari, Android, iOS */}\n
Run Code Online (Sandbox Code Playgroud)\n

这破坏了我的脚本,因为双斜杠使其成为无效的 URL(即,如果我按原样将其输入浏览器,则会出现错误)。

\n

所以我想知道 \xe2\x80\x94 这个 URL 开头的双斜杠的目的是什么?如果它看起来是无效的 URL,那么它实际上如何检索字体?

\n

Jon*_*eis 6

当引用另一个域上的内容时,以两个斜杠而不是httphttps协议开头的 URL 会告诉浏览器使用与源页面相同的协议来请求 URL 的内容(以防止混合内容)。

这些 URL 不适合在地址栏中输入,这就是为什么当您尝试直接导航到它们时它们看起来是无效 URL。

  • @bugsyb 在 HTTPS 像今天这样普遍存在之前,这是 10 多年前的一个更常见的问题。以您的字体 TTF 为例,如果它们在 HTTPS 页面上嵌入了“http://cdn...”,它们将作为混合内容被阻止(这会阻止 HTTP 资源在 HTTPS 页面上加载)。使用双斜杠是确保内容始终与页面匹配的安全方法。也就是说,我认为现在始终使用“https://”来获取内容并没有什么坏处。 (2认同)