【问题标题】:"src://domain.com" cannot work.. using firefox 28 and chrome 34“src://domain.com”无法工作.. 使用 firefox 28 和 chrome 34
【发布时间】:2014-06-27 02:08:17
【问题描述】:

我似乎无法使用“src://domain.com”来加载任何 CDN。这是我从谷歌 CDN 复制的代码

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

这是chrome抛出的错误:

GET file://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js

net::ERR_FILE_NOT_FOUND

如果我在 URL 前添加 http: 或 https//,代码可以正常工作,是否有任何原因导致这不起作用?

【问题讨论】:

    标签: javascript url uri src


    【解决方案1】:

    这种 URL 使用的协议与初始文档中使用的协议相同。

    这意味着如果您想访问远程资源,它只能用于网络协议。当您在file: 协议中打开文件时不要使用它,例如在file://c:\myFile.html 中。

    此方案的重点是让您可以使用 HTTP 或 HTTPS,而无需硬编码您的 src 属性(并且不必提供两个不同的文件)without raising a protocol change warning in the browser

    更一般地说,由于同源策略会阻止 JavaScript 中的大多数 AJAX 或远程资源使用,因此您不应该在没有 HTTP 服务器的情况下编写任何代码。

    阅读更多:Protocol Relative URLs, Why to Use Them, and Common Pitfalls

    【讨论】:

    • 非常感谢@dystroy 提供的解决方案和额外的学习链接
    【解决方案2】:

    您正在使用方案相对 URI。这意味着它将使用与您的 HTML 文档相同的方案。

    存在 URI 的 HTTP 和 HTTPS 版本。 FILE 版本没有。

    要么在 HTTP 服务器上进行测试,要么使用绝对 URI(例如,以 http:// 开头的URI)。

    我建议使用 HTTP 服务器。 HTTP 上的网页和本地文件系统上的网页有很多不同之处,因此开发工作受益于 HTTP 环境。

    【讨论】:

    • 感谢@Quentin 的解释,我认为它只会获取 http:// 或 https://
    【解决方案3】:

    改用这个(注意 https:// 而不是 //)

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    

    或者,在网络服务器上运行您的文件,而不是从您的文件系统中运行

    【讨论】:

    • 谢谢@jonathan,在另一个提到“协议相对 URL/相对 URI”一词之前,我不知道从 Web 服务器和文件系统运行它有什么不同
    猜你喜欢
    • 2014-06-15
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 2018-03-09
    • 2012-01-28
    • 2012-09-01
    • 2011-03-31
    相关资源
    最近更新 更多