这是我的快递:
var tty = require('tty.js');
var app = tty.createServer({
shell: 'bash',
port: 3001
});
app.all('*', function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type');
next();
});
app.get('/', function(req, res, next) {
next();
});
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "X-Requested-With");
next();
});
app.listen();
我的目标是在响应中添加标头以允许跨域访问。理论上,all和use方法调用都应该处理这个问题,但是应用程序在任何时候都不会调用它们的函数参数。
答案 0 :(得分:0)
您需要创建middleware。它是通过使用功能完成的,尝试实现以下方式。并把它放在所有其他功能之前:
app.use(function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
res.header('Access-Control-Allow-Headers', 'Content-Type');
next();
});
答案 1 :(得分:0)
如上所述,您需要实现中间件。在我的情况下,我通过访问创建Express服务器的应用程序部分来完成它。
我可以与您分享一些代码,这将有所帮助:
var tty = require('./libs/tty/tty.js');
app = tty.createServer(conf)
//Routes
var User=require('./routes/user');
var Files=require('./routes/files');
app.use( bodyParser.json() );
app.use('/user',User);
app.use('/files',Files);
答案 2 :(得分:0)
浏览器通常会发送飞行前OPTIONS请求进行CORS连接。请检查此article。
您可以按如下方式处理OPTIONS请求:
app.use(function(req, res, next){
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, accept, access-control-allow-origin');
if ('OPTIONS' == req.method) res.send(200);
else next();
});
或使用cors npm模块:
var cors = require('cors');
app.use(cors());
app.options('*', cors());
检查此gist以获取完整的js文件。