JS中的HTTP JSON请求-CORS问题

问题描述 投票:0回答:1

该项目的目标是使用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>
javascript json rest ibm-watson
1个回答
0
投票

XMLHttpRequest遵循CORS策略,这意味着您必须在请求中放入ORIGIN标头才能使服务器能够验证您的域(但这不能保证您的应用程序将获得对资源的访问权限)

© www.soinside.com 2019 - 2024. All rights reserved.