该项目的目标是使用IBM的Watson及其自然语言理解AI。
当我使用Insomnia(REST客户端)时,我可以获取POST请求以通过并获得JSON响应。
但是,当我尝试使用JavaScript时,我无法发布请求并收到以下错误:“从原点'null'到'WEBSITE-I'M-TRYING-TO-REACH的XMLHttpRequest的访问已被CORS策略阻止:对预检请求的响应未通过访问控制检查:不允许重定向进行预检请求。“
这是我使用的代码:
var url = "http://newsroom.ibm.com/Guerbet-and-IBM-Watson-Health-Announce-Strategic-Partnership-for-Artificial-Intelligence-in-Medical-Imaging-Liver"
getData(url);
function getData(url){
var data = JSON.stringify({
"url": url,
"features": {
"sentiment": {},
"categories": {},
"concepts": {},
"entities": {},
"keywords": {}
}
});
var postURL = "https://api.us-south.natural-language-understanding.watson.cloud.ibm.com/instances/9d2bd18a-8017-4e44-8de9-acc01a9f0795/v1/analyze?version=2019-07-12"
var xml = new XMLHttpRequest();
xml.withCredentials = true;
xml.addEventListener("readystatechange", function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
var username = "myUsername";
var password = "myPassword";
xml.open("POST", postURL);
xml.setRequestHeader("content-type", "application/json");
xml.setRequestHeader("Authorization", "Basic " + username + ":" + password)
xml.send(data);
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JSON Requests</title>
<script src="main.js"></script>
</head>
<body>
<h1>JSON Requests</h1>
</body>
</html>
XMLHttpRequest
遵循CORS策略,这意味着您必须在请求中放入ORIGIN
标头才能使服务器能够验证您的域(但这不能保证您的应用程序将获得对资源的访问权限)