Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 与Restify的CORS问题_Node.js_Reactjs_Rest_Restify - Fatal编程技术网

Node.js 与Restify的CORS问题

Node.js 与Restify的CORS问题,node.js,reactjs,rest,restify,Node.js,Reactjs,Rest,Restify,我创建了一个带有节点Api的ReactJs应用程序,该应用程序使用Restify,但无论我做什么,POST方法总是会出错: 405(方法不允许) CORS策略已阻止在“”处从源“”获取的访问:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许源”标头。如果不透明响应满足您的需要,请将请求的模式设置为“no cors”,以获取禁用cors的资源 我已经尝试了我在互联网上看到的一切,但我总是有这个问题 要调用API,以下是我的代码: const request = new R

我创建了一个带有节点Api的ReactJs应用程序,该应用程序使用Restify,但无论我做什么,POST方法总是会出错:

  • 405(方法不允许)
  • CORS策略已阻止在“”处从源“”获取的访问:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许源”标头。如果不透明响应满足您的需要,请将请求的模式设置为“no cors”,以获取禁用cors的资源
我已经尝试了我在互联网上看到的一切,但我总是有这个问题

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

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);
    });
因此,我希望在调用Api后收到验证(代码200),但我总是遇到CORS问题

还有什么需要配置的吗


谢谢你的帮助!!!:D

您必须使用
corsmidware
来避免
cors
问题……将此代码写入app.js文件中……应该可以正常工作

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);

当使用任何方法从外部调用restify服务时,这都可以很好地工作
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);