我有一个运行parse-server的节点服务器,我使用免费套餐在Heroku上托管。我使用AngularJS构建了一个Web应用程序,用于从服务器检索数据。在本地开发之后,我还在Heroku上托管了webapp,由于某种原因,我得到了一个混合内容警告,我的所有图像都是这样的:
混合内容:' 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;
}
在我的parse-server中的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
答案 0 :(得分:0)
这个问题非常模糊,您的问题可能在堆栈中的任何位置,或者更多地涉及整个应用程序配置。
假设您已正确配置服务器端的所有内容......
从AngularJS方面,我会在模板中找到<script>
(来自您的错误消息)或onPostExecute
标记,并确保您使用https而不是http来请求资源