Mod注意:这个问题是关于为什么XMLHttpRequest/ fetch/等。浏览器上的受相同访问策略限制(您会收到提及 CORB 或 CORS 的错误),而 Postman 则不受此限制。这个问题不是关于如何修复“No ‘Access-Control-Allow-Origin’…”错误。这是关于它们发生的原因。 请停止发帖: 日光下每种语言/框架的 CORS 配置。而是找到您的相关语言/框架的问题。 允许请求规避 CORS 的 3rd 方服务 用于关闭各种浏览器的 CORS 的命令行选项
Mod注意:这个问题是关于为什么XMLHttpRequest/ fetch/等。浏览器上的受相同访问策略限制(您会收到提及 CORB 或 CORS 的错误),而 Postman 则不受此限制。这个问题不是关于如何修复“No ‘Access-Control-Allow-Origin’…”错误。这是关于它们发生的原因。
XMLHttpRequest
fetch
请停止发帖:
我正在尝试通过连接到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); });
如果我理解正确,您正在对与您的页面所在的域不同的域执行XMLHttpRequest 。因此浏览器会阻止它,因为出于安全原因,它通常允许同一来源的请求。当您想要进行跨域请求时,您需要做一些不同的事情。有关如何实现这一点的教程是使用 CORS。
当您使用 Postman 时,它们不受此政策的限制。引用自跨域 XMLHttpRequest:
常规网页可以使用 XMLHttpRequest 对象从远程服务器发送和接收数据,但它们受到同源策略的限制。扩展并没有那么有限。扩展程序可以与其源之外的远程服务器通信,只要它首先请求跨域权限。