【发布时间】:2020-11-05 16:45:35
【问题描述】:
我正在尝试使用端点 URL 提交发布请求。我将内容类型作为应用程序/json 以及用户名和密码的两个标头值发送。当我尝试通过 Postman 访问它时,我得到 200 响应代码以及 tokenId 和 successUrl 但是当通过下面的 JavaScript 代码完成同样的操作时,我得到 401。当我尝试通过 JSP 和爪哇。我不是 Javascript 专家,无法找出原因。我阅读了 CORS 文章,但不确定为什么跨域不是 Java/JSP 代码的问题,而是发生在 JavaScript 中。 下面是代码:
<!DOCTYPE html>
<html>
<body>
<h2>REST</h2>
<button type="button" onclick="myFunc()">Request data</button>
<p id="demo"></p>
<script>
function myFunc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML = this.responseText;
}
};
xhttp.open("POST", "Endpoint URL entered here", true);
xhttp.setRequestHeader("Content-type", "application/json");
xhttp.setRequestHeader("X-OpenAM-Username", "username entered here");
xhttp.setRequestHeader("X-OpenAM-Password", "password entered here");
xhttp.send();
}
</script>
</body>
</html>
Chrome浏览器报错如下:
CORS 策略已阻止从源“null”访问“端点 URL”处的 XMLHttpRequest:对预检请求的响应未通过访问控制检查:没有“Access-Control-Allow-Origin”标头出现在请求的资源上。
a.html:23 POST '端点 URL' net::ERR_FAILED
编辑1: 火狐浏览器出现的错误如下:
XHROPTIONS '端点 URL' [HTTP/1.1 401 未授权 2025ms]
跨域请求被阻止:同源策略不允许读取“端点 URL”处的远程资源。 (原因:缺少 CORS 标头“Access-Control-Allow-Origin”)。
跨域请求被阻止:同源策略不允许读取“端点 URL”处的远程资源。 (原因:CORS 请求未成功)。
请让我知道我到底做错了什么。
【问题讨论】:
标签: javascript html rest xmlhttprequest