Mod note :这个问题是关于为什么
XMLHttpRequest
/fetch
/etc。浏览器上的受相同访问策略限制(您会收到提及 CORB 或 CORS 的错误),而 Postman 则不受此限制。这个问题 不是 关于如何修复“No ‘Access-Control-Allow-Origin’…”错误。这是关于它们发生的原因。请停止发帖:
日光下每种语言/框架的 CORS 配置。而是 找到您的相关语言/框架的问题。
允许请求规避 CORS 的 3rd 方服务
用于关闭各种浏览器的 CORS 的命令行选项
我正在尝试通过连接到 RESTful API 内置 Flask 来使用 JavaScript 进行授权。但是,当我提出请求时,我收到以下错误:
XMLHttpRequest 无法加载 http://myApiUrl/login。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin ‘null’ 不允许访问。
我知道 API 或远程资源必须设置标头,但是为什么当我通过 Chrome 扩展 Postman 发出请求时它会起作用?
这是请求代码:
$.ajax({
type: 'POST',
dataType: 'text',
url: api,
username: 'user',
password: 'pass',
crossDomain: true,
xhrFields: {
withCredentials: true,
},
})
.done(function (data) {
console.log('done');
})
.fail(function (xhr, textStatus, errorThrown) {
alert(xhr.responseText);
alert(textStatus);
});
原文由 Mr Jedi 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果我理解正确,您正在对与您的页面所在的域不同的域执行 XMLHttpRequest 。因此浏览器会阻止它,因为出于安全原因,它通常允许同一来源的请求。当您想要进行跨域请求时,您需要做一些不同的事情。有关如何实现这一点的教程是 使用 CORS 。
当您使用 Postman 时,它们不受此政策的限制。引用自 跨域 XMLHttpRequest :