簡體   English   中英

使用AngularJS,Parse-Server和Heroku的混合內容出現問題

[英]Issue with mixed content using AngularJS, Parse-Server, and Heroku

我有一個運行解析服務器的節點服務器,該服務器使用免費層托管在Heroku上。 我使用AngularJS構建了一個Web應用程序,該應用程序從服務器檢索數據。 在本地進行開發后,我還將webapp托管在Heroku上,由於某種原因,我收到的所有圖像的混合內容警告如下:

混合內容:“ https:// MYWEBAPP.herokuapp.com”上的頁面已通過HTTPS加載,但請求的圖像不安全
“ http:// MYPARSESERVER.herokuapp.com/parse/files/SOMEIMAGE.jpg”。 此內容也應通過HTTPS提供。

我的解析服務器使用的是https,但是出於某種原因,對文件的請求似乎只通過http。

由於這是我第一次構建並托管整個堆棧,因此我不確定Angular應用程序,解析服務器配置還是僅是heroku設置是否存在此問題。

如果有人對問題可能在哪里有任何想法,我可以提供代碼片段以幫助闡明。 謝謝您的幫助!

代碼示例:

在我的角度應用程序的app.js中:

function parseInit($rootScope) {
    Parse.initialize("MY_APP_ID");
    Parse.serverURL = 'https://MY_PARSE_SERVER.herokuapp.com/parse';

    $rootScope.currentUser = Parse.User.current();
}

從后端檢索數據的示例,包括似乎引起問題的File對象:

function getEvents() {
   let q = $q.defer();

   let Event = Parse.Object.extend('Event');
   let query = new Parse.Query(Event);

   query
     .include('poster')
     .find({
       success: (events) => {
         q.resolve(events);
       },
       error: (object, error) => {
         q.reject(error);
       }
     });

   return q.promise;
 }

在我的解析服務器中的app.js中:

const express = require('express');
const ParseServer = require('parse-server').ParseServer;
const ParseDashboard = require('parse-dashboard');
const path = require('path');
const env = require('./env.json');

var node_env = process.env.NODE_ENV || "development";
var config = env[node_env];

var api = new ParseServer({
   databaseURI: process.env.MONGODB_URI || config.databaseUri,
   cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
   appId: MY_APP_ID,
   masterKey: MY_MASTER_KEY,
   serverURL: process.env.SERVER_URL || config.serverUrl, 
   facebookAppIds: ["MY_FACEBOOK_APP_ID"],
   revokeSessionOnPasswordReset: true
});

var dashboard = new ParseDashboard({
   "apps": [{
      "serverURL": process.env.SERVER_URL || config.serverUrl,
      "appId": config.appId,
      "masterKey": config.masterKey,
      "appName": "api",
   }]
});

var app = express();

// Serve the Parse API on the /parse URL prefix
var mountPath = process.env.PARSE_MOUNT || '/parse';
app.use(mountPath, api);
app.use("/dashboard", dashboard)

var port = process.env.PORT || 1337;
app.listen(port, function() {
  console.log('Running on port ' + port + '.');
});

process.env.SERVER_URL由我的heroku設置傳遞,當前為https:// MY_PARSE_SERVER.herokuapp.com/parse

這個問題非常模糊,您的問題可能在堆棧中的任何地方,或者與整個應用程序配置有關。

假設您已經正確配置了服務器端的所有內容...

從AngularJS的角度來看,我會在模板中有<image> (來自錯誤消息)或<script>標記的任何地方查找,並確保您使用https而不是http請求資源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM