[英]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.