如何解决在nodejs中设置https cookie
我也在尝试在我的网站上设置登录系统。
听说nodejs cookie是做到这一点的好方法。
在以下链接中:
https://stackoverflow.com/a/21809393/322537
https://nodejs.org/dist/latest-v8.x/docs/api/https.html
我找到了一个如何创建https服务器的示例。
据我了解,createServer函数应在每次客户端发出请求时运行。
所以我的代码中包含以下内容:
var server_https=modules.https.createServer({
key: this.ssl_key,cert:this.ssl_cert
},this.respond_to_client).listen(this.port);
mconnection.prototype.respond_to_client=function(request,response){
console.log('responded to client');
}
当网站启动并运行时,服务器运行正常。 但是 respond_to_client 函数似乎永远不会运行,因为nodejs的日志文件永远不会指示“响应客户端”字符串。
那怎么可能? 可能与我稍后在代码中将https服务器升级到websocket有关吗?
更新:
这是服务器文件:
https://openage.org/s.js
这是连接模块:
https://openage.org/c.js
这是正在提供的聊天程序
https://openage.org/chat/14/?page=index
然后计划制作cookie来标识客户端,然后设置登录系统。但是我被困在这。 /:
解决方法
我已经复制了您的节点脚本以进行本地测试。我首先使事情在http(vs https)上运行,并且能够很好地得到响应。但是,移至https后,服务器将永远不会收到该请求。浏览器必须在发送实际请求之前首先建立安全连接。
当尝试在同一端口上运行多个服务器(https和ws)时,我遇到了类似的问题。您所拥有的非常接近,但是您需要对https.createServer({options},handler)的设置进行调整。
您在哪里:
var eccrypto = require("eccrypto");
eccrypto.encrypt(publicKeyA,Buffer.from("Sic Mundus Creatus Est")).then(function(encrypted) {
val ciphertext = encrypted.ciphertext
//the hex encoded ciphertext is then sent to the server
}
您还需要为“ ca”添加一个选项:
val cipherBytes = DatatypeConverter.parseHexBinary(ciphertext)
val cipher: Cipher = Cipher.getInstance("ECIES","BC")
cipher.init(Cipher.DECRYPT_MODE,privateKeyA)
print( cipher.doFinal(cipherBytes) )
我为“ ca”使用的值一直是文件的内容:从证书签署机构收到的middle.crt。
重要
虽然可以使用自签名证书来实现此目的,但由于没有签名权限,所以我从未能够这样做。
因此,就像您对其他证书文件所做的一样,您也应该对intermediate.crt文件执行此操作。
var server_https= https.createServer({
key: this.ssl_key,cert:this.ssl_cert
},respond_to_client).listen(this.port);
我发现这很困难并且记录不充分。我不是SSL / TSL专家,但是快速搜索了中间证书:
中间证书是由 可信根,专门用于颁发最终实体服务器证书。的 结果是从受信任的根CA开始的证书链, 通过中间并以颁发给 您。此类证书称为链接根证书。 Source
intermediate.crt将具有以下结构:
var server_https= https.createServer({
key: this.ssl_key,cert: this.ssl_cert,ca: this.ssl_ca,// also add this
},respond_to_client).listen(this.port);
这是浏览器中的响应。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。