但是,当我尝试在由私人机构开发的API中“获取”时,它在邮递员中运行良好,但在我的本地服务器上不行。 它不断显示“(api url)”(localserver)'的XMLHTTPREQUEST'已被CORS策略所阻止。在请求的资源上没有“访问控制”标头。
htmldoc:
<!DOCTYPE html>
<html>
<head>
<title>API</title>
</head>
<body>
<div>
PRINT
</div>
<script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk=" crossorigin="anonymous"></script>
<script src="./script.js"></script>
</body>
</html>
ajax请求:
$.ajax({
url: "api",
method: "GET",
data: {
"Key": "(myapikey)",
"UserID": "userid",
"Password": "pass",
"AwbNo": "someNumber"
},
success: function(data){
console.log(data);
},
}).fail(function(){
console.log("error in script");
});
i尝试了解决方案,例如包括允许访问 - 控制 - 原始标头,但仍显示出相同的误差。请帮助
Edit1:
i在我的Ajax代码中添加了以下两行:
crossDomain: true,
dataType: 'jsonp'
现在显示以下错误:
Cross-Origin读取阻塞(CORB)阻止了跨原始响应“(API请求)”,使用MIME类型应用程序/JSON。有关更多详细信息
Edit2:在AJAX代码中添加:
header:{
"Access-Control-Allow-Origin":"*"
}
以显示相同的错误
网络浏览器中的cors机械设备将不会让您从API中获取资源,除非API会通过带有域值或Wildcard(*)的标题访问控制响应给您响应。
因此,您必须更改API响应才能返回此标头
Access-Controll-Allow-Origin=<protocol://your_domain:port>
或如果您无法访问更改API,则可以编写简单的代理(简单REST API),以将请求从浏览器重定向到实际端点。