【发布时间】:2016-06-17 20:52:26
【问题描述】:
我一直在使用 postman 测试一个 API,我可以成功调用该 API。
当我尝试通过 javascript 执行此调用时,出现身份验证错误。
URL 和授权与邮递员调用的匹配,当我通过 curl 使用这些详细信息进行调用时,我能够检索到正确的数据。
<script type="text/javascript">
var data = new FormData();
data.append("attributeId", "");
data.append("validFrom", "");
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
if (this.readyState === 4) {
console.log(this.responseText);
}
});
xhr.open("GET", "http:/restpAPI/test");
xhr.setRequestHeader("authorization", "Basic asdsadsadjlafdkfjkldfj==");
xhr.setRequestHeader("cache-control", "no-cache");
xhr.setRequestHeader("postman-token", "dsadasd-asdsad-asd-asd-aasd");
xhr.send(data);
</script>
当我使用此脚本运行本地网页时,我得到一个 401 表示未经授权。
JavaScript 代码和 postman 或 cURL 有什么区别,有没有一种从 JavaScript 进行身份验证的方法?
更新
我发现使用授权密钥设置 RequestHeader 会将请求从 get 转换为 options。这是导致错误的原因。
【问题讨论】:
标签: javascript rest curl postman