在HTTPS方面从heroku获取错误

aso*_*sky 4 https json heroku node.js angularjs

我有一个用angular编写的应用程序,并通过nodejs部署到heroku.当我在家用计算机上以开发模式运行它时,一切都很棒,并且没有错误发生.但是一旦我将它传递给heroku,我在控制台上收到以下错误消息:

Mixed Content: The page at 'https://yasawebsite.herokuapp.com/#/' was loaded
over HTTPS, but requested an insecure script
'http://api.tumblr.com/v2/blog/asayorku.tumblr.com/posts?api_key=[MY SECTRET API-KEY]&callback=angular.callbacks._0'. 
This request has been blocked; the content must be served over HTTPS.
Run Code Online (Sandbox Code Playgroud)

我是如何从tumblr调用我的数据的?

这就是我在做的事情:

$http.jsonp('http://api.tumblr.com/v2/blog/asayorku.tumblr.com/posts?api_key=[MY SECRET API Key]&callback=JSON_CALLBACK')
  .success(function (data) {
    // my data analysis process
  });
Run Code Online (Sandbox Code Playgroud)

这就是我在server.js文件中设置的内容

var express = require('express')
    , morgan = require('morgan')
    , bodyParser = require('body-parser')
    , methodOverride = require('method-override')
    , app = express()
    , port = process.env.PORT || 3000
    , router = express.Router();

app.use(express.static(__dirname + '/dist'));
app.use(morgan('dev'));
app.use(bodyParser());
app.use(methodOverride());

router.get('/', function(req, res, next) {
    res.render('index.html');
});

app.use('/', router);

app.listen(port);
console.log('App running on port', port);
Run Code Online (Sandbox Code Playgroud)

我想强调除了用$ http进行的数据调用之外,一切都有效,我应该使用vanilla js还是jquery方法?如果是这样,为什么会发生这种情况?

它调用/ dist文件夹的原因也是因为应用程序首先被Grunt缩小.

idb*_*old 7

尝试将API请求更改为此(使协议相对):

$http.jsonp('//api.tumblr.com/v2/blog/asayorku.tumblr.com/posts?api_key=[MY SECRET API Key]&callback=JSON_CALLBACK')
  .success(function (data) {
    // my data analysis process
  });
Run Code Online (Sandbox Code Playgroud)

  • @Vapri 我刚刚从您的 API 请求中删除了 `http:` 部分。它使请求与您所在页面的当前协议相关。因此,在 HTTPS 站点(例如您的站点)上,请求将是 https://api.tumblr... (2认同)