javascript - JS 中的 HTTP JSON 请求 - CORS 问题
问题描述
该项目的目标是使用 IBM 的 Watson 及其自然语言理解 AI。
当我使用 Insomnia(一个 REST 客户端)时,我可以获得一个 POST 请求以通过并获得 JSON 响应。
但是,当我尝试使用 javascript 时,我无法发布请求并收到以下错误:“ CORS 策略已阻止从源 'null'访问 ' WEBSITE-I'M-TRYING-TO-REACH ' 处的 XMLHttpRequest' :对预检请求的响应未通过访问控制检查:预检请求不允许重定向。”
这是我正在使用的代码:
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>
解决方案
如前所述,将原始密钥放在标题中:
xml.setRequestHeader("Origin", "https://the-great.site");
推荐阅读
- ios - otool 输出中的“binds_to_weak”和“weak_defines”标志是什么意思?
- c++ - 在目标纹理上复制源纹理,其中源大于目标
- python - ValueError:查看限制最小值 -0.5 小于 1,并且在绘制到条形图时是无效的 Matplotlib 日期值
- python - Python,将 n x m numpy 数组与 n 大小的 numpy 数组进行比较
- php - Laravel 5.7:如何使用多个框发送联系表
- c# - 字体 Aharoni 不支持常规样式
- php - 如何从无法安装任何东西的服务器发送电子邮件?
- c# - 有人可以向我解释一下这个 Chunk Size 值吗
- sql - BigQuery 标准 SQL:将值设置为正无穷或负无穷
- java - 未调用 Rest Controller 中的获取服务