Javascript 使用AngularJS、Parse Server和Heroku混合内容时出现问题
我有一个节点服务器,运行我在Heroku上使用免费层托管的解析服务器。我使用AngularJS构建了一个web应用程序,从服务器检索数据。在本地开发之后,我还在Heroku上托管了webapp,出于某种原因,我收到了一条关于我所有图像的混合内容警告,如下所示: 混合内容:“https://MYWEBAPP.herokuapp.com”页面是通过https加载的,但请求的图像不安全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.
“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@zwlserverURL
是https://myparseserver.herokuapp.com/parse,作为配置变量传递到我的节点服务器。我的所有图像都是从我的解析后端检索的。出于某种原因,似乎所有文件请求都是从http://myserver.herokuapp.com/parse/files请求的,尽管我的所有其他请求都是从https://myserver.herokuapp.com/parse请求的。如果可以澄清的话,我可以包括服务器和angular init的代码片段。您的配置的一些代码示例将非常有帮助。抱歉延迟,添加了一些相关代码。如果还有什么有用的,请告诉我。