首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CORS与Restify的问题

CORS与Restify的问题
EN

Stack Overflow用户
提问于 2019-01-15 17:33:29
回答 1查看 2.3K关注 0票数 3

我已经用Node创建了一个使用Restify的ReactJs应用程序,但是无论我做什么,我总是会出现POST方法的错误:

  • 405 (方法不允许)
  • 从源“http://localhost:3001/api/login”获取“http://localhost:3000”的访问已被CORS策略阻止:对飞行前请求的响应不通过访问控制检查:请求资源上不存在“访问控制-允许-原产地”报头。如果不透明响应满足您的需要,请将请求的模式设置为“no- CORS”,以获取禁用CORS的资源。

我试过在网上看到的一切,但我总是有这个问题。

要调用API,下面是我的代码:

代码语言:javascript
复制
const request = new Request(url + 'login', {
    method: 'POST',
    body: JSON.stringify({ 'username' : username, 'password' : password }),
    headers: new Headers({ 'Content-Type': 'application/json' })
})
return fetch(request)
    .then(response => {
        if (response.status < 200 || response.status >= 300) {
            throw new Error(response.statusText);
        }
        return response.json();
    })
    .then(({ token }) => {
        localStorage.setItem('token', token);
    });

我像这样配置Restify:

代码语言:javascript
复制
const config = require('./config'),
  restify = require('restify'),
  errs = require('restify-errors');


var connection = config.db.get


const server = restify.createServer({
  name: config.name,
  version: config.version,
  url: config.hostname
});

server.use(restify.plugins.acceptParser(server.acceptable));
server.use(restify.plugins.queryParser());
server.use(restify.plugins.bodyParser());

server.use(
  function crossOrigin(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, OPTIONS, DELETE');
    res.header('Access-Control-Allow-Credentials', false);
    return next();
  }
);

server.listen(3001, function () {
  console.log('%s listening at %s', server.name, server.url);
});

server.post("/api/login", function (req, res) {
  res.send(200);
});

因此,我希望在调用Api之后收到一个验证(代码200),但我总是会遇到CORS问题。

还有什么要配置的吗?

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2019-02-09 09:10:35

您必须使用corsMiddleware来避免cors issue....write --这段代码在app.js文件中应该可以正常工作。

代码语言:javascript
复制
var restify = require('restify');
var corsMiddleware = require('restify-cors-middleware');

var cors = corsMiddleware({
        preflightMaxAge: 5,
        origins: ['*'],
        allowHeaders:['X-App-Version'],
        exposeHeaders:[]
      });
/**
 * Initialize Server
 */
 var server = restify.createServer();

server.pre(cors.preflight);
server.use(cors.actual);
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54204080

复制
相关文章

相似问题

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