我尝试提供HTTPS并听取POST请求,但它没有响应请求。
我使用节点0.12.6并表达4.13.3
我认为路由应该设置不同,但我不确定如何...
var fs = require('fs');
var express = require('express');
var app = express();
var https = require('https');
var privateKey = fs.readFileSync('my_key.key', 'utf8');
var certificate = fs.readFileSync('my_cert.crt', 'utf8');
https.createServer({key: privateKey, cert: certificate}).listen(3000);
app.post('/process', function(req, res) {
res.send('processing...');
});
答案 0 :(得分:1)
你应该听app,而不是https。
如果您使用expressjs ,甚至不需要https
{{1}}
答案 1 :(得分:0)
您的凭据后,您没有将快速app
作为选项传递给您的https服务器。所以当这个服务器被帖子命中时,它不知道使用快速路由来响应。以下代码块来自This问题,与我实施https的方式相同,并且非常易于阅读/遵循。
var fs = require('fs');
var http = require('http');
var https = require('https');
var privateKey = fs.readFileSync('sslcert/server.key', 'utf8');
var certificate = fs.readFileSync('sslcert/server.crt', 'utf8');
var credentials = {key: privateKey, cert: certificate};
var express = require('express');
var app = express();
// your express configuration here
var httpServer = http.createServer(app);
var httpsServer = https.createServer(credentials, app);
httpServer.listen(80);
httpsServer.listen(443);
请注意app
作为https.createServer(credentials, app);
中的第二个选项传递如果您愿意,可以取消httpServer,但这样做也可以让您以任何您想要的方式处理http请求。如果用户在其地址中使用http而不是https,这将非常有用。然后,您可以使用http服务器将它们重定向到安全的https路由。
如果您仍然遇到CORS问题,请尝试添加
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
res.header("Access-Control-Allow-Headers", "Content-Type");
res.header("Access-Control-Allow-Methods", "DELETE, PUT, POST");
next();
});
到您的快速配置。这将允许跨域请求到您的服务器
答案 2 :(得分:0)
全心全意,
问题实际上是在客户端上。 在对 localhost 执行xmlhttprequest时,我得到“连接被拒绝”。 虽然它是同一台服务器,当我使用服务器名称时,问题解决了。
对于CORS,我使用了CORS npm和
app.use(cors());