当我自己运行node app.js
时,我在浏览器中没有出现CORS错误。当我将其作为服务运行时,我没有收到OPTIONS请求的错误,但我确实在POST请求中收到错误。
我使用nssm创建了服务。我将服务配置为使用与运行节点进程相同的帐户登录。
var express = require('express');
// The `socket` module initializes socket.io for other endpoints
var io = require('./modules/socket');
var upload = require('./routes/upload');
var app = express();
app.configure(function () {
app.use(express.cookieParser());
app.use(express.session({secret: 'secret', key: 'express.sid'}));
});
app.set('port', 5000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(app.router);
app.all('/up', function(req, res, next) {
res.header('Access-Control-Allow-Credentials', true);
res.header('Access-Control-Allow-Origin', 'https://####.###');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');
if (req.method == "OPTIONS") {
res.send(200);
} else {
next();
}
});
app.post('/up', upload.upload);
你能想到POST的错误只会在它作为服务运行时发生的原因吗?
答案 0 :(得分:0)
发现问题。使用NSSM创建服务时,启动目录需要是应用程序的主要javascript文件的位置,而不是节点可执行文件的位置。
写入磁盘时看起来是权限问题。