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