繁体   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