Javascript 使用AngularJS、Parse Server和Heroku混合内容时出现问题

Javascript 使用AngularJS、Parse Server和Heroku混合内容时出现问题,javascript,angularjs,node.js,heroku,parse-server,Javascript,Angularjs,Node.js,Heroku,Parse Server,我有一个节点服务器,运行我在Heroku上使用免费层托管的解析服务器。我使用AngularJS构建了一个web应用程序,从服务器检索数据。在本地开发之后,我还在Heroku上托管了webapp,出于某种原因,我收到了一条关于我所有图像的混合内容警告,如下所示: 混合内容:“https://MYWEBAPP.herokuapp.com”页面是通过https加载的,但请求的图像不安全 “http://MYPARSESERVER.herokuapp.com/parse/files/SOMEIMAGE.

我有一个节点服务器,运行我在Heroku上使用免费层托管的解析服务器。我使用AngularJS构建了一个web应用程序,从服务器检索数据。在本地开发之后,我还在Heroku上托管了webapp,出于某种原因,我收到了一条关于我所有图像的混合内容警告,如下所示:

混合内容:“https://MYWEBAPP.herokuapp.com”页面是通过https加载的,但请求的图像不安全
“http://MYPARSESERVER.herokuapp.com/parse/files/SOMEIMAGE.jpg”。此内容还应通过HTTPS提供

我的解析服务器正在使用https,但由于某些原因,文件请求似乎是通过http进行的

因为这是我第一次构建和托管整个堆栈,所以我不能完全确定这是我的Angular应用程序、解析服务器配置还是heroku设置的问题

如果有人对可能出现的问题有任何想法,我可以提供代码片段来帮助澄清。谢谢你的帮助

代码示例:

在我的angular应用程序的
app.js
中:

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

    $rootScope.currentUser = Parse.User.current();
}
从后端检索数据的示例,包括可能导致问题的文件对象:

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\u URL
由my heroku设置传递,当前为https://my\u PARSE\u SERVER.herokuapp.com/PARSE

此问题非常模糊,您的问题可能在堆栈中的任何位置,也可能与整个应用程序配置有关

假设您已正确配置服务器端的所有内容


从AngularJS方面,我会查看模板中有
(来自错误消息)或
标记的任何地方,并确保您使用https而不是http请求资源。

angular应用程序的
服务器URL是什么?@zwl?https://MYPARSESERVER.herokuapp.com/parseI是指您为解析服务器设置的值configuration@zwl
serverURL
是https://myparseserver.herokuapp.com/parse,作为配置变量传递到我的节点服务器。我的所有图像都是从我的解析后端检索的。出于某种原因,似乎所有文件请求都是从http://myserver.herokuapp.com/parse/files请求的,尽管我的所有其他请求都是从https://myserver.herokuapp.com/parse请求的。如果可以澄清的话,我可以包括服务器和angular init的代码片段。您的配置的一些代码示例将非常有帮助。抱歉延迟,添加了一些相关代码。如果还有什么有用的,请告诉我。