微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

允许CORS REST请求到Heroku上的Express/Node.js应用程序

我在Node.js的express框架上编写了一个REST API,它适用于来自Chrome的js控制台和URL栏等的请求。我现在正在尝试让它处理来自另一个应用程序的请求,域(CORS)。

一个由JavaScript前端自动完成的请求是/ api / search?uri =,并且在“预检”OPTIONS请求中显示为失败。

在我的快速应用程序,我添加CORS标题,使用:

var allowCrossDomain = function(req,res,next) {
    res.header('Access-Control-Allow-Origin','*');
    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');

    // intercept OPTIONS method
    if ('OPTIONS' == req.method) {
      res.send(200);
    }
    else {
      next();
    }
};

和:

app.configure(function () {
  app.use(express.bodyParser());
  app.use(express.methodoverride());
  app.use(app.router);
  app.use(allowCrossDomain);
  app.use(express.static(path.join(application_root,"public")));
  app.use(express.errorHandler({ dumpExceptions: true,showStack: true }));
});

从Chrome控制台,我得到这些标题

请求网址:http://furIoUs-night-5419.herokuapp.com/api/search?uri = http:// localhost:5000 / collections / 1 / documents / 1

请求方法:选项

状态码:200 OK

请求标头

Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:origin,x-annotator-auth-token,accept
Access-Control-Request-Method:GET
Connection:keep-alive
Host:furIoUs-night-5419.herokuapp.com
Origin:http://localhost:5000
Referer:http://localhost:5000/collections/1/documents/1
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.5 (KHTML,like Gecko) Chrome/19.0.1084.56 Safari/536.5

查询字符串参数

uri:http://localhost:5000/collections/1/documents/1

响应头

Allow:GET
Connection:keep-alive
Content-Length:3
Content-Type:text/html; charset=utf-8
X-Powered-By:Express

这看起来像是缺少由API应用程序发送的正确标头?

谢谢。

解决方法

我已经cheked你的代码一个干净的Expressjs应用程序,它的工作正常。

尝试将您的app.use(allowCrossDomain)移动到configure函数的顶部。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐