簡體   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