【问题标题】:Javascript https calls httpJavascript https 调用 http
【发布时间】:2022-01-03 18:28:28
【问题描述】:

在我的https://mywebsite.org 网页中,脚本调用http://other-domain.com,它在mywebsite 位于http 之前一直有效,但是当mywebsite 位于https 时,http 调用被阻止!

http://other-domain.com 的服务器端是在 nodeJS 和 Express 中构建的。我该如何解决?

【问题讨论】:

  • 当我的网站在 https 中时,http 调用被阻止”是什么意思?您是否在浏览器的“控制台”选项卡中收到 CORS 错误?如果是这样,请将错误消息添加到您的问题中。

标签: node.js express http cors


【解决方案1】:

您可能必须在other-domain.com 的服务器上设置 CORS 策略。 这是你必须使用的中间件https://expressjs.com/en/resources/middleware/cors.html

var express = require('express')
var cors = require('cors')
var app = express()

app.use(cors())

app.get('/products/:id', function (req, res, next) {
  res.json({msg: 'This is CORS-enabled for all origins!'})
})

app.listen(80, function () {
  console.log('CORS-enabled web server listening on port 80')
})

cors 具有选项,因此您可以限制对特定域的访问。在您的情况下,这可能是 mywebsite.org。

【讨论】:

  • cors 设置为 app .use(cors({ credentials: true, origin: function (origin, callback) { if( !origin || origin === undefined || typeof origin === "undefined" ) callback(null, true); else { if (whitelist.indexOf(origin) !== -1) { callback(null, true) } else { callback(new Error('Not allowed by CORS')) } } }, optionsSuccessStatus: 200 })) 但来自 https 的请求总是被阻止!
  • whitelist 数组中有您的域吗?
  • 当然是@Krasimir
  • 根据您的描述,最常见的问题是 CORS 问题。如果不是这样,那么可能是某种堆栈问题。如果不提供更多信息,我们将无法帮助您。您使用 AWS 还是 GCP?你有负载均衡器吗?谁首先接受请求。从控制台(如果有的话)发布消息也会有所帮助。
猜你喜欢
  • 2012-01-14
  • 2013-03-13
  • 1970-01-01
  • 2014-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多