Javascript Reed API获取请求出现网络错误&;基本授权
我正在尝试向REED jobs API发出请求,尽管我收到了错误:Javascript Reed API获取请求出现网络错误&;基本授权,javascript,node.js,api,Javascript,Node.js,Api,我正在尝试向REED jobs API发出请求,尽管我收到了错误:TypeError:NetworkError在尝试获取资源时。正在React组件中进行调用。Reed API声明您需要将所有请求的API密钥作为用户名包含在基本身份验证http头中,密码为空。这一部分让我感到困惑,我不知道如何以这种方式配置提取。为了帮助实现这一点,我从Postman发送了API调用,并成功地获得了响应。因此,我使用Postman的代码生成功能进行了以下调用,但它不起作用: var myHeaders =
TypeError:NetworkError在尝试获取资源时
。正在React组件中进行调用。Reed API声明您需要将所有请求的API密钥作为用户名包含在基本身份验证http头中,密码为空。
这一部分让我感到困惑,我不知道如何以这种方式配置提取。为了帮助实现这一点,我从Postman发送了API调用,并成功地获得了响应。因此,我使用Postman的代码生成功能进行了以下调用,但它不起作用:
var myHeaders = new Headers();
myHeaders.append("Authorization", `${process.env.REACT_APP_REED_KEY}==`);
var requestOptions = {
method: "GET",
headers: myHeaders,
};
fetch("https://www.reed.co.uk/api/1.0/search?keywords=accountant&location=london&employerid=123&distancefromlocation=15", requestOptions)
.then((response) => response.text())
.then((result) => console.log(result))
.catch((error) => console.log("error", error));
更新:
我已将代码更改为以下代码。不幸的是,我仍然得到一个错误。我现在还收到一个新错误:跨源请求被阻止:同源策略不允许读取远程资源https://www.reed.co.uk/api/1.0/search?keywords=accountant&location=london&employerid=123&distancefromlocation=15. (原因:CORS飞行前响应未成功)。
更新代码:
import { encode } from "base-64";
var myHeaders = new Headers();
myHeaders.append("Authorization", `Basic ${encode(process.env.REACT_APP_REED_KEY)}`);
var requestOptions = {
method: "GET",
headers: myHeaders,
};
fetch("https://www.reed.co.uk/api/1.0/search?keywords=accountant&location=london&employerid=123&distancefromlocation=15", requestOptions)
.then((response) => response.text())
.then((result) => console.log(result))
.catch((error) => console.log("error", error));
1.奇怪的是,您在base64字符串的末尾添加了
=
。不是每个base64字符串都有,它是根据输入字符串的长度填充的。使用实际的base64编码。2.REACT_APP_REED_键是否包含字符串Basic
?从你的例子中看不出来1:=
是邮递员给你的;我相信那里通常会有密码,但里德不需要。我试着移除它,但什么也没改变。我将尝试尝试使用base64编码。2:它不包括Basic
,只包括键。如果它们需要Basic auth,则字符串Basic
必须在其中。阅读基本授权,这比猜测它如何工作要好。请检查我的更新。看起来你解决了第一个问题。这个与CORS相关的新问题是另一个问题,这个网站上有大量关于CORS是什么的重复。很可能reeds.co.uk不会让你故意这么做。奇怪的是,您在base64字符串的末尾添加了=
。不是每个base64字符串都有,它是根据输入字符串的长度填充的。使用实际的base64编码。2.REACT_APP_REED_键是否包含字符串Basic
?从你的例子中看不出来1:=
是邮递员给你的;我相信那里通常会有密码,但里德不需要。我试着移除它,但什么也没改变。我将尝试尝试使用base64编码。2:它不包括Basic
,只包括键。如果它们需要Basic auth,则字符串Basic
必须在其中。阅读基本授权,这比猜测它如何工作要好。请检查我的更新。看起来你解决了第一个问题。这个与CORS相关的新问题是另一个问题,这个网站上有大量关于CORS是什么的重复。很可能reeds.co.uk不允许您故意这样做。