当我的 xmlhttprequest 被 CORS 阻止时,我如何连接 api [重复]
Posted
技术标签:
【中文标题】当我的 xmlhttprequest 被 CORS 阻止时,我如何连接 api [重复]【英文标题】:How can I connect with api when my xmlhttprequest is blocked by CORS [duplicate] 【发布时间】:2019-10-04 16:07:10 【问题描述】:我正在使用 XMLHttpRequest() 与 API 连接,并且在控制台中出现关于被 CORS 策略阻止的错误。我的网址使用 https。如何连接该 API?我需要一些 API-KEY 或类似的东西吗?
我为 chrome 安装了 Allow-Control-Allow-Origin 扩展。没用
例子:
function UserAction()
var xmlhttp = new XMLHttpRequest();
// xmlhttp.setRequestHeader('Accept', 'application/json');
xmlhttp.withCredentials = true;
xmlhttp.onreadystatechange = function()
if (this.readyState == 4 && this.status == 200)
var myObj = JSON.parse(this.responseText);
document.getElementById("demo").innerhtml = myObj.high;
;
xmlhttp.open("GET", "https://sinsmbe1.insepa.net:20106/m3api-rest/execute/CRS610MI/LstByNumber;maxrecs=100;returncols=CUNO,STAT?CUNO=10000", true);
xmlhttp.send();
我有 3 条来自控制台的信息。
警告:
用于加载资源的连接 https://sinsmbe1.insepa.net:20106 使用 TLS 1.0 或 TLS 1.1,它们是 已弃用,将来将被禁用。一旦禁用,用户 将被阻止加载这些资源。服务器应该 启用 TLS 1.2 或更高版本。看 https://www.chromestatus.com/feature/5654791610957824 了解更多 信息。
错误:
访问 XMLHttpRequest 在 'https://sinsmbe1.insepa.net:20106/m3api-rest/execute/CRS610MI/LstByNumber;maxrecs=100;returncols=CUNO,STAT?CUNO=10000' CORS 策略已阻止来自原点“null”:响应 预检请求未通过访问控制检查:否 请求中存在“Access-Control-Allow-Origin”标头 资源。
警告:
跨域读取阻塞 (CORB) 阻止了跨域响应 https://sinsmbe1.insepa.net:20106/m3api-rest/execute/CRS610MI/LstByNumber;maxrecs=100;returncols=CUNO,STAT?CUNO=10000 MIME 类型为 application/vnd.sun.wadl+xml。看 https://www.chromestatus.com/feature/5629709824032768 了解更多 详情。
【问题讨论】:
在 Firefox 中使用这个调试 addons.mozilla.org/en-US/firefox/addon/cors-everywhere 最近在 chrome 中更新了它的安全扩展不再起作用 你昨天已经问过这个问题了:***.com/questions/56165837/… "如何连接那个 API?我需要一些 API-KEY 或类似的东西?" – 除非他们允许您发出请求,否则您不能发送 API 密钥。所以没有(或者至少现在还没有)。 【参考方案1】:您必须在 api 的开头添加这些标头:
res.header("Access-Control-Allow-Origin","*");
res.header("Access-Control-Allow-Headers","Origin,X-Requested-With,Content-Type,Accept");
【讨论】:
var xmlhttp = new XMLHttpRequest(); xmlhttp.setRequestHeader("Access-Control-Allow-Origin","*"); xmlhttp.setRequestHeader("Access-Control-Allow-Headers","Origin,X-Requested-With,Content-Type,Accept");
类似上面的东西?
你在哪里执行代码?
@omlette — 否。API 必须在响应中添加标头。您不能授予自己的代码使用访问者浏览器访问任意网站的权限。以上是关于当我的 xmlhttprequest 被 CORS 阻止时,我如何连接 api [重复]的主要内容,如果未能解决你的问题,请参考以下文章
带有 Angular 和 Express 的 CORS - 在 Postman 中工作,但不在浏览器中
CORS - 从 Postman 伪造 CORS 预检无法返回标头