記一次搭建https服務

創建https服務

# 生成https證書
- 生成私鑰key文件:
openssl genrsa -out privatekey.pem 1024

- 通過私鑰生成CSR證書籤名  (需要填一些信息、可直接回車)
openssl req -new -key privatekey.pem -out certrequest.csr

- 通過私鑰和證書籤名生成證書文件 
openssl x509 -req -in certrequest.csr -signkey privatekey.pem -out certificate.pem

# 導入文件
var https = require('https')
    ,fs = require("fs");

var options = {
    key: fs.readFileSync('./privatekey.pem'),
    cert: fs.readFileSync('./certificate.pem')
};

https.createServer(options, (req,res) => {
    // 這裏填寫你要的文件
}).listen(3011, 'domain')

preflighted request

一個簡單的請求如下:

# HTTP方法是下列之一
HEAD
GET
POST
# HTTP頭包含
Accept
Accept-Language
Content-Language
Last-Event-ID
# Content-Type,但僅能是下列之一
application/x-www-form-urlencoded
multipart/form-data
text/plain
任何一個不滿足上述要求的請求,即被認爲是複雜請求。一個複雜請求不僅有包含通信內容的請求,同時也包含預請求(preflight request)。
# 請求中除GET,POST,Head都需要發送預請求,通過設置一個最大允許時間,可以減少預請求的發送。
http.createServer((req, res) => {
    // req.setHeader('accept-language', 'zh-CN,zh;q=0.9') 
    if (req) {
        res.setHeader('X-Foo', 'bar');
        res.setHeader ('Access-Control-Allow-Methods','PUT,POST,GET,DELETE');
        res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8082');
        res.setHeader("Access-control-max-age", 1000);
        res.setHeader('Access-Control-Allow-Headers', 'Origin, Accept-Language, X-Requested-With, Content-Type, Accept, csrfpreventiontoken');
        res.writeHead(200, {"Content-Type": "application/json;charset=utf-8"});
        res.end('ok');
    }

}).listen(8080, 'ipaddress');
# 獲取頭部信息
req.headers
# 獲取參數
post 請求是放在req.body
get 請求是放在JSON.stringify(url.parse(req.url,true).query)
發佈了38 篇原創文章 · 獲贊 4 · 訪問量 9622
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章