[英]Why doesn't XMLHttpRequest payload reach Node.JS server after moving to HTTPS?
[英]HTTPS node server doesn't return web pages
所以我剛剛將我的 HTTP web 申請轉到 HTTPS。
所以我的 server.js 目前看起來像
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('cert.pem')
};
https.createServer(options, function (req, res) {
res.writeHead(200);
res.end("hello world\n");
}).listen(8080);
這是一個 marko js 項目,我的 server.js 曾經看起來像
require("./project").server({
httpPort: process.env.PORT || 8080 // Optional, but added here for demo purposes
});
現在,當我導航到我創建的各種 web 頁面中的任何一個時,例如 localhost:8080/home,我只返回你好世界。 我認為這是由於我在創建服務器方法中的響應。
如何按預期返回我的 web 頁面,或者是否有任何資源可以為我指明正確的方向?
你已經看過這個howto了嗎? https://nodejs.org/en/knowledge/HTTP/servers/how-to-serve-static-files/
http.createServer(function (req, res) {
fs.readFile(__dirname + req.url, function (err,data) {
if (err) {
res.writeHead(404);
res.end(JSON.stringify(err));
return;
}
res.writeHead(200);
res.end(data);
});
}).listen(8080);
它與http
一起使用,但我假設您也可以嘗試https
。
在與您的服務器公開之前,只需閱讀操作指南中的安全問題;)
這是您必須處理請求的代碼:
https.createServer(options, function (req, res) { res.writeHead(200); res.end("hello world\n"); }).listen(8080);
瀏覽器要求什么並不重要,您編寫的代碼總是以hello world
響應。
如果你想用不同的東西回應,那么你需要注意req
object,看看瀏覽器要求什么,並用適當的東西回應。
我只返回你好世界。 我認為這是由於我在創建服務器方法中的響應。
如果您自己創建服務器,則您負責將內容傳遞給響應。 在你的情況下,你總是通過hello world
。 這個例子展示了如何在創建自己的 http 服務器時專門渲染 Marko。
要點是這樣的。 盡管如果您有多個頁面,則需要根據req.url
呈現不同的模板。
const page = require('./path/to/page.marko');
https.createServer(options, function (req, res) {
res.setHeader('Content-Type', 'text/html');
page.render({ data:123 }, res);
}).listen(8080);
但是,您似乎正在使用marko-starter
項目。 因此,對於這個項目,要啟用https
,您可以將sslCert
和sslKey
作為選項傳遞給項目配置。
module.exports = require('marko-starter').projectConfig({
sslKey: fs.readFileSync('key.pem'),
sslCert: fs.readFileSync('cert.pem')
/* other config */
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.