繁体   English   中英

Web 资源不会加载到 Beanstalk - https 而不是 http 标头

[英]web ressources don't load on Beanstalk - https instead of http header

问题

所以我用 node.js 和 express(主要是 express 应用程序生成器的框架)创建了一个简单的 http web 服务器。 然后我将服务器上传到 AWS Beanstalk Web 环境。

问题是我无法从服务器加载资源(CSS 和 javascript),如果我连接到它。 如果我在浏览器中打开网站,我会得到一个net::ERR_CONNECTION_TIMED_OUT来加载所有资源。

我认为问题是 beanstalk 上的 get 请求使用了“https”网址,

Request URL: https://...elasticbeanstalk.com/javascripts/GameLogic.js

因为它适用于我的本地主机,但它使用“http”网址。

Request URL: http://localhost:3000/javascripts/GameLogic.js

html 站点本身也会加载(在资源超时之后),但这也使用“http”请求

Request URL: http://....elasticbeanstalk.com/

您能否更改 AWS Beanstalk Web-Environment 中的标头请求 url(用于 CSS、JS)以使用 http 而不是 https? 或者在 HTML 或 Node.js 上更改它?

信息

服务器使用 node.js 头盔模块。 然后我就传入请求发送我的 html 页面:

app.get('/', function(req, res, next) {
res.sendFile(path.join(__dirname + "/public/main.html")); //Um bei / als pfad die main.html zu geben
}); 

在 html 页面中,我请求资源:

<link rel="stylesheet" type="text/css" href="\stylesheets\style.css">
<script src="/javascripts/jquery.min.js"></script>
<script src="/javascripts/GameLogic.js"></script>

解决方案尝试

我试过不使用头盔,但该版本的行为完全相同,并且如果它在 beanstalk 上(在 localhost 服务器上它始终有效),则不会加载资源。

我还尝试更改一些安全组规则,以允许从所有来源到负载均衡器的端口 443 上的 https 和从负载均衡器到 ec2 实例的端口 443 上的 https。 情况没有改变。

然后我尝试将 https 请求重定向到 http

app.get('/', function(req, res, next){
    console.log("redirect to http?");
    res.redirect('http://' + req.headers.host + req.url);
});

但是由于“多次重定向”,该站点甚至没有加载 html。

所以目前我不知道如何使 https 请求工作或如何将其更改为 http 请求。

笔记

我也在使用学生账户,所以我无权使用 AWS 证书管理器或将 ELB 重定向到 HTTPS,如果这与它有关的话。

好吧,是 node.js 的头盔模块出了问题。 我不太明白到底是什么将标题更改为 https,hsts 似乎只是其中的一部分。

但是在完全删除它之后,我和其他人可以访问网络应用程序并加载资源。

我在测试中没有更早发现它的原因:我在取下头盔后从未删除或重新生成我的包裹锁。 所以它还在那里。 现在我卸载了它并在上传到 AWS Beanstalk 之前创建了一个新的包锁。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM