我试图在javascript代码中使用fetch调用一些API。我在我的机器上使用ReactJs进行开发,并在同一网络中进行另一个开发,在另一台机器上使用.net开发API。使用postman,我可以调用API,但是使用fetch no。我试图在其他服务器中调用另一个API,结果是成功的。
我正在使用fetch,也尝试使用axios。我在堆栈溢出的其他问题中发现了这个API:https://gturnquist-quoters.cfapps.io/api/random。答案是要尝试获取它们,而我尝试再次抛出相同的错误。
我的代码用于获取gturnquist:
const myHeader = new Headers();
myHeader.append('Content-Type', 'application/json');
fetch('http://gturnquist-quoters.cfapps.io/api/random', {
method: 'GET', headers: myHeader,
})
.then((res) => {
console.log(res);
return {};
})
.then(res => console.log(res));以及获取我需要的API的代码:
const myHeader = new Headers();
const token = 'mytoken';
myHeader.append('id-tenant', token);
myHeader.append('Content-Type', 'application/json');
const id = 'myid';
const url = 'myurl';
fetch(`http://10.1.1.35/${url}/${id}`, {
method: 'GET',
headers: myHeader,
}).then(res => res.json()).then(res => console.log(res));当我试图调用API时,出现了这个错误。
选项http://10.1.1.35/url/id 503 (服务不可用) 从源“http://10.1.1.35/url/id”获取“http://localhost:3000”的访问已被CORS策略阻止:对飞行前请求的响应不通过访问控制检查:请求资源上不存在“访问控制-允许-原产地”报头。如果不透明响应满足您的需要,请将请求的模式设置为“no- CORS”,以获取禁用CORS的资源。 Uncaught (承诺) TypeError:未能获取
是服务器端错误还是javascript错误?
在我的服务器中,API被配置为拉杰库马尔·彼得的答案。
编辑:我的网络错误
我在尝试处理错误时所遇到的问题:
发布于 2019-05-30 14:00:04
当从web浏览器执行API调用时,它通常会执行名为“飞行前检查”的操作。这基本上就是浏览器向API发送请求的地方(在您自己的API调用之前),以检查它允许做什么,甚至是否值得发送实际的请求。
为此,它使用OPTIONS方法(而不是GET,POST .etc)。
如果您的API端点尚未配置为接受选项请求,则来自浏览器的预运行请求将失败--它将中止发送请求。
要解决问题,需要配置API以接受OPTIONS方法。您还应该检查允许哪些源(连接到API的客户端的IP地址)。
https://stackoverflow.com/questions/56379638
复制相似问题