JS 中的 HTTP JSON 请求 - CORS 问题
Posted
技术标签:
【中文标题】JS 中的 HTTP JSON 请求 - CORS 问题【英文标题】:HTTP JSON request in JS - CORS issue 【发布时间】:2020-07-08 04:42:50 【问题描述】:该项目的目标是使用 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>
【问题讨论】:
【参考方案1】:如前所述,将原始密钥放在标题中:
xml.setRequestHeader("Origin", "https://the-great.site");
【讨论】:
以上是关于JS 中的 HTTP JSON 请求 - CORS 问题的主要内容,如果未能解决你的问题,请参考以下文章
Vue.js 对 API 的 GET 请求被 CORS 阻止
Js 跨域CORS报错 Response for preflight has invalid HTTP status code 405
转 Js 跨域CORS报错 Response for preflight has invalid HTTP status code 405