为什么我的 JavaScript 代码会收到“请求的资源上不存在 'Access-Contr
技术问答
313 人阅读
|
0 人回复
|
2023-09-12
|
Mod注意:为什么这个问题是关于为什么XMLHttpRequest/ fetch/等等。浏览器受同一访问策略的限制(您将收到提到 CORB 或 CORS 的错误), Postman 不受此限制。这个问题不是关于如何修复关于如何修复No ‘Access-Control-Allow-Origin’…错误。这就是他们发生的原因。
- h% s- K) \3 ^; P' @' R请停止发帖:2 [! y7 g- [, ~+ `2 j1 U
每种语言/框架在阳光下 CORS 配置。相反,找出您的相关语言/框架。# m$ I% X" o" f0 X, C/ s
要求避免 CORS 的 3rd 方服务
: f" N$ g. }4 U' L) \; B- x用于关闭各种浏览器CORS 命令行选项我试图通过连接到它RESTful API内置Flask来使用JavaScript进行授权。但是,当我提出请求时,我收到以下错误:. C7 M: J. s' l! `2 W1 a
XMLHttpRequest 不能加载 http://myApiUrl/login。请求的资源中没有Access-Control-Allow-Origin标头。Origin ‘null’ 不允许访问。$ I% i# a0 @2 c' @( ?4 v" q& S
我知道 API 或远程资源必须设置标头,但为什么我通过 Chrome 扩展Postman它会在发出请求时工作吗? l3 i+ z2 @. F6 }
这是请求代码:7 \+ ]8 ?$ d( |
[code]$.ajax({ type: " OST", 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); }code]
8 C( x* m- G2 J# m4 \5 U2 L1 o 解决方案:
" {+ g* j% g) y( m* k) q 如果我理解正确,你正在执行与页面所在的域不同的域XMLHttpRequest 。因此浏览器会阻止它,因为出于安全原因,它通常允许同一来源的请求。当您想要进行跨域请求时,您需要做一些不同的事情。有关如何实现这一点的教程是使用 CORS。& v+ l( w" E8 @% C
当您使用 Postman ,它们不受这一政策的限制。引用自我跨域 XMLHttpRequest:
3 F+ {8 M/ ^- b( w" v可用于常规网页XMLHttpRequest 对象从远程服务器发送和接收数据,但它们受到同源策略的限制。扩展没有那么有限。只要它首先要求跨域权限,扩展程序就可以与源外的远程服务器通信。 |
|
|
|
|
|