4

我正在使用 firebase 托管来托管 angularfire 应用程序。

使用文档中的快速入门说明,该应用程序部署良好。

我的应用程序中有一些小问题,我需要更改。我进行了这些更改,再次执行了这些步骤,但实时应用程序(通过我的 firebase url)没有反映这一点。

我试过删除应用程序,删除 firebase.json 文件,多次重做该过程。但它继续反映旧的变化。如果这是一个 git push 部署,我似乎还没有提交新的更改。我通读了文档、--help、命令等,但无法弄清楚。

我可能在这里缺少什么?

编辑:确切的命令:

localhost:angfire Test$ firebase init
----------------------------------------------------
Your Firebase Apps kpennell@gmail.com
----------------------------------------------------
torid-fire-4332
----------------------------------------------------
Enter the name of the Firebase app you would like to use for hosting
Firebase app: torid-fire-4332
----------------------------------------------------
Site URL: https://torid-fire-4332.firebaseapp.com
----------------------------------------------------
Enter the name of your app's public directory.
(usually where you store your index.html file)
Public Directory: (current directory) app
Initializing app into current directory...
Writing firebase.json settings file...
Successfully initialized app
To deploy: firebase deploy
localhost:angfire Test$ firebase deploy
Preparing to deploy Public Directory...
progress: 100%

Successfully deployed
Site URL: https://torid-fire-4332.firebaseapp.com, or use firebase open
Hosting Dashboard: https://firebase.com/account then view the hosting section of your app
localhost:angfire Test$ firebase open
localhost:angfire Test$ `

然后我打开该页面,它仍在拉入更新的文件。它不喜欢我第一次使用 http 文件。我已将它们更改为 https,但这并未反映在应用程序中。

编辑2

尽管在应用程序中进行了更改,但仍然遇到 http 问题。

Failed to load resource: net::ERR_INSECURE_RESPONSE https://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css
Failed to load resource: net::ERR_INSECURE_RESPONSE https://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js

我在应用程序中的脚本:

  <script src="bower_components/angular/angular.js"></script>
  <script src="bower_components/angular-route/angular-route.js"></script>
  <script src="bower_components/firebase/firebase.js"></script>
  <script src="bower_components/firebase-simple-login/firebase-simple-login.js"></script>
  <script src="bower_components/angularfire/dist/angularfire.js"></script>
  <link rel="stylesheet" href="//cdn.leafletjs.com/leaflet-0.7.3/leaflet.css" />
  <script src="//cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
  <script src="//tombatossals.github.io/angular-leaflet-directive/dist/angular-leaflet-directive.min.js"></script>
  <link rel="stylesheet" href="bower_components/font-awesome/css/font-awesome.css" />
  <link rel="stylesheet" href="bower_components/Leaflet.awesome-markers/dist/leaflet.awesome-markers.css" />
  <script src="bower_components/Leaflet.awesome-markers/dist/leaflet.awesome-markers.js"></script>
4

1 回答 1

2

看起来您的应用程序正在通过 HTTP 加载一些脚本文件,而应用程序本身是通过 HTTPS 提供服务的。这导致一些浏览器拒绝非安全脚本。

例如,当我加载您的应用程序时,Chrome 会在其控制台上写下这个:

[已阻止] ' https://torid-fire-4332.firebaseapp.com/ ' 的页面是通过 HTTPS 加载的,但运行了来自 ' http://cdn.leafletjs.com/leaflet-0.7.3/leaflet的不安全内容.css ':此内容也应通过 HTTPS 加载。”。

在 Internet Explorer 9 中,页面加载正常(在我确认要“显示所有内容”之后)。我的猜测是您的移动浏览器的行为类似于 IE9,并且仍然接受 HTTP 和 HTTPS 的组合。

解决方案是通过 HTTPS 加载所有内容。

为了防止这种类型的问题,现在通常指定没有协议的脚本源:

<script src="//cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>

加载此script标签时,它会从其父标签“继承”协议。因此,当页面通过 HTTPS 加载时,脚本将通过 HTTPS 加载。当页面通过 HTTP 加载时,脚本也通过 HTTP 加载。

更新

您的第二次编辑显示,在进行了我上面建议的最后一次更改后,更新已成功推送到 Firebase 托管。我怀疑实际的变化与成功有什么关系,但至少现在我们取得了进展。

:ERR_INSECURE_RESPONSE你得到的是因为 cds.leafletjs.com 没有看到使用有效的 HTTPS 证书。

将leaflet.js 文件放在您自己的应用程序中可能最容易解决这个问题。

您还可以使用替代的 CDN,它可以正确实现 HTTPS。例如http://cdnjs.com/libraries/leaflet

于 2014-08-21T17:15:18.463 回答