Reactjs App request.get

时间:2018-01-19 01:27:45

标签: node.js reactjs http cors package.json

我有一个反应js应用程序,它做一个简单的http get。它不使用webpack并使用package.json

var request = require('request');

var options = {
  url: 'http://localhost:8181/api/v1/status',
  headers: {
    'Access-Control-Allow-Origin':'*'
  }
}

function callback(error, response, body) {
  if (!error && response.statusCode == 200) {
    var info = JSON.parse(body);
    console.log(info.stargazers_count + " Stars");
    console.log(info.forks_count + " Forks");
  }
}

request(options, callback);

此代码失败,我收到以下错误

  

localhost /:1无法加载http://localhost:8181/api/v1/status:对预检请求的响应未通过访问控制检查:请求的资源上没有“Access-Control-Allow-Origin”标头。因此,不允许原点“http://localhost:3000”访问。响应具有HTTP状态代码405.如果不透明响应满足您的需要,请将请求的模式设置为“no-cors”以获取禁用CORS的资源。

我尝试访问的服务器正在运行python,我已经附加了必要的标头来发出请求。 我对reactjs来说很新鲜

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

让我们分解错误信息。第一部分:

  

对预检请求的响应没有通过访问控制检查:否'访问控制 - 允许 - 来源'标头出现在请求的资源上。

表示您的Python服务器未设置Access-Control-Allow-Origin标头。您应该确保您的python服务器在响应中设置此标头。如果这不起作用,请继续:

  

响应的HTTP状态代码为405.

HTTP状态代码405表示不允许的方法。您的python服务器可能还需要设置标头:Access-Control-Allow-Methods: <method>, <method>。因此,请包含您要允许的每个内容,例如GET, POST, OPTIONS

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Methods