首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在node.js上的express.js框架中启用跨域资源共享(CORS

如何在node.js上的express.js框架中启用跨域资源共享(CORS
EN

Stack Overflow用户
提问于 2012-06-25 05:59:26
回答 7查看 159.7K关注 0票数 104

我正在尝试用node.js构建一个web服务器,它将支持跨域脚本,同时仍然提供公共目录中的静态文件。我正在使用express.js,不太确定如何允许跨域脚本(Access-Control-Allow-Origin: *)。

我看到了this post,我觉得它没什么用。

代码语言:javascript
复制
var express = require('express')
  , app = express.createServer();

app.get('/', function (req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    next();
});

app.configure(function () {
    app.use(express.methodOverride());
    app.use(express.bodyParser());
    app.use(app.router);
});

app.configure('development', function () {

    app.use(express.static(__dirname + '/public'));
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});

app.configure('production', function () {


    var oneYear = 31557600000;
    //    app.use(express.static(__dirname + '/public', { maxAge: oneYear }));
    app.use(express.static(__dirname + '/public'));
    app.use(express.errorHandler());
});

app.listen(8888);
console.log('express running at http://localhost:%d', 8888);
EN

回答 7

Stack Overflow用户

发布于 2012-07-23 15:10:09

遵循@米歇尔·蒂利的解决方案,显然它一开始对我不起作用。不知道为什么,也许我使用的是chrome和不同版本的node。在做了一些小的调整之后,它现在对我来说是有效的。

代码语言:javascript
复制
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();
});

如果有人遇到与我类似的问题,这可能会有所帮助。

票数 61
EN

Stack Overflow用户

发布于 2016-03-02 23:10:08

尝试使用此cors npm模块。

代码语言:javascript
复制
var cors = require('cors')

var app = express()
app.use(cors())

该模块提供了域名白名单、特定接口开启cors等多项功能,可对cors设置进行微调。

票数 13
EN

Stack Overflow用户

发布于 2013-04-05 18:32:00

我使用的是:

代码语言:javascript
复制
var app = express();

app
.use(function(req, res, next){
    res.header('Access-Control-Allow-Origin', '*');
    res.header('Access-Control-Allow-Headers', 'X-Requested-With');
    next();
})
.options('*', function(req, res, next){
    res.end();
})
;

h.readFiles('controllers').forEach(function(file){
  require('./controllers/' + file)(app);
})
;

app.listen(port);
console.log('server listening on port ' + port);

这段代码假设您的控制器位于控制器目录中。此目录中的每个文件应如下所示:

代码语言:javascript
复制
module.exports = function(app){

    app.get('/', function(req, res, next){
        res.end('hi');
    });

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11181546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档