回答

收藏

为什么我的 JavaScript 代码会收到“请求的资源上不存在 'Access-Contr

技术问答 技术问答 267 人阅读 | 0 人回复 | 2023-09-12

Mod注意:为什么这个问题是关于为什么XMLHttpRequest/ fetch/等等。浏览器受同一访问策略的限制(您将收到提到 CORB 或 CORS 的错误), Postman 不受此限制。这个问题不是关于如何修复关于如何修复No ‘Access-Control-Allow-Origin’…错误。这就是他们发生的原因。
- `4 L3 _9 @- h0 M请停止发帖' E( G0 w! X1 w. J) n% G6 O  K
每种语言/框架在阳光下 CORS 配置。相反,找出您的相关语言/框架。4 H' \+ E3 y0 J: {
要求避免 CORS 的 3rd 方服务& i7 X/ ~. V7 C* {
用于关闭各种浏览器CORS 命令行选项
我试图通过连接到它RESTful API内置Flask来使用JavaScript进行授权。但是,当我提出请求时,我收到以下错误:
3 z5 V* q' h  h8 a% fXMLHttpRequest 不能加载 http://myApiUrl/login。请求的资源中没有Access-Control-Allow-Origin标头。Origin ‘null’ 不允许访问。
# a; ~, @# i3 g! S' a: f
我知道 API 或远程资源必须设置标头,但为什么我通过 Chrome 扩展Postman它会在发出请求时工作吗?, ?0 p2 z# W; b% W) F
这是请求代码:
5 y# ]) G9 f6 d& I8 ?, L[code]$.ajax({    type: &quotOST",   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]               
9 P8 A+ b' V# y3 M2 _    解决方案:                                                               
; Y; W% ?5 i+ t7 F& j0 z                                                                如果我理解正确,你正在执行与页面所在的域不同的域XMLHttpRequest 。因此浏览器会阻止它,因为出于安全原因,它通常允许同一来源的请求。当您想要进行跨域请求时,您需要做一些不同的事情。有关如何实现这一点的教程是使用 CORS。
' s, k6 H. Z0 I6 o9 `6 H1 Q( H当您使用 Postman ,它们不受这一政策的限制。引用自我跨域 XMLHttpRequest:/ [0 d/ H3 _2 f) U; E" L
可用于常规网页XMLHttpRequest 对象从远程服务器发送和接收数据,但它们受到同源策略的限制。扩展没有那么有限。只要它首先要求跨域权限,扩展程序就可以与源外的远程服务器通信。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则