如何拒绝 CORS 请求

如何拒绝 CORS 请求

Access-Control-Allow-OriginCORS(跨域资源共享)预检响应中缺少 HTTP 标头时,是否意味着:

  • 服务器不支持 CORS?或者,
  • 服务器拒绝访问?

如果服务器不支持 CORS,则标头显然会丢失。

但如果它确实支持CORS,是否意味着访问被拒绝?

相反,实施 CORS 的服务器应该如何向客户端宣布由于 CORS 而拒绝访问?它是否应该以类似这样的状态进行响应403 Forbidden

我发现的每个来源都解释了添加哪些标头以允许跨域访问,但没有解释如何拒绝访问。

** 编辑:错误地提问,我的错,请参阅下面的解释**

与我的预期相比,我的问题重点似乎偏离了主题。答案确实集中在服务器配置上,但我感兴趣的是 HTTP 协议。

更准确地说,我之所以提出这个问题是因为我尝试通过交叉请求访问服务器,并且:

  • 服务器未包含 CORS 标头,而我的 XMLHttpRequest 包含它们
  • 浏览器确实接受了swf媒体的交叉请求
  • 我检查了媒体的引荐来源,它的 iframe 确实与请求的目标不同
  • 我甚至不知道服务器是否实现了 CORS
  • 我不拥有该服务器

我对 HTTP 中的 CORS 的理解程度较低,并且一种交叉请求被接受的事实,让我怀疑服务器是否拒绝了我的请求以及我做错了什么。

我应该发表一个答案,因为我相信从那时起我已经解决了这个问题。

答案1

跨域访问默认被拒绝,因为这被视为安全风险。要拒绝访问,您需要删除允许跨域调用的配置。

全新安装的 Web 服务器不允许开箱即用的 CORS,至少对于我最近使用的 IIS 而言是这样。

检查如何配置(取消)不同的 Web 服务器以允许(拒绝)CORS:http://enable-cors.org/server.html

答案2

正如 @mimo 所说,

默认拒绝跨域访问

那么就无需禁用 CORS。它很好地回答了最初的问题。

正如编辑所解释的那样,我感到困惑的部分原因是某个地方的 SWF 对象正在跨域,而来自同一域的 XMLHttpRequest 被拒绝。解决方案:SWF 不受 XHR 策略(SOP(同源)或 CORS)的约束。这意味着实验中没有任何问题,这让我开始问这个问题:服务器没有实现 CORS,页面上的媒体也没有使用它,而 XHR 正在使用 CORS 并且失败了。

相关内容