我有一个反应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来说很新鲜
如何解决此问题?
答案 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