首页 > 其他分享 >[跨域问题]:Response to preflight request doesn't pass access control check: It does not have HTTP o

[跨域问题]:Response to preflight request doesn't pass access control check: It does not have HTTP o

时间:2022-11-23 08:33:59浏览次数:79  
标签:control Control HTTP 跨域 res request access preflight Access

先将注意力放在报错信息上:
“Response to preflight request doesn't pass access control check: It does not have HTTP ok status.”

首先什么是 preflight request ?

A CORS preflight request is a CORS request that checks to see if the CORS protocol is understood and a server is aware using specific methods and headers.
** It is an OPTIONS request**, using three HTTP request headers: Access-Control-Request-Method, Access-Control-Request-Headers, and the Origin header.
@https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request

也就是在一个HTTP 请求之前,会先发送一个 METHOD 为 OPTION 的预请求,去询问服务器是否支持跨域请求。

问题的解决

首先设定一个响应拦截器:

var app = express();

app.use((req, res, next) => {
  res.setHeader('Access-Control-Allow-Origin', '*');
  res.setHeader('Access-Control-Allow-Headers', '*');
  next();
});

然后设定一个 OPTION 的handler, 所匹配的 path 就是你先前发送请求失败的 path:

app.options('/example', (req, res) => {
  res.status(200).send();
});

现在就可以了, 我的本地完整的前后台涉及代码在最后面的 [附] 部分,用于参考:

其他的解决办法

解决办法主要因场景而定,说说我这个问题怎么遇到的:
我这里是在写一个 graphql 的客户端请求处理的 demo,
所以我需要模拟客户端请求, 是一个最简单的 cs 场景。
我提供了一个 html 文件,其中用 fetch 向node express 端的 graphql handler 发送请求。
我的启动方式,我尝试了直接本地浏览器通过 file协议打开 index.html, 这明显是会跨域的。 也尝试了用 live-server vscode 插件将该 index.html serve 在了 5500 默认端口。 这明显也是会跨域的。
所以我先 设定了 res.setHeader('Access-Control-Allow-Origin', '*');
发现还是不行。 google 一番然后就有了这篇笔记。

Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.

标签:control,Control,HTTP,跨域,res,request,access,preflight,Access
From: https://www.cnblogs.com/jaycethanks/p/16917117.html

相关文章

  • Android网络请求(3) 网络请求框架OkHttp
    Android网络请求(3) 网络请求框架OkHttp本节我们来讲解OkHtpp网络请求框架什么是网络请求框架在我的理解中,网络请求框架是为了方便我们更加便捷规范的进行网络请求所建......
  • Nginx 使用ngx_http_map_module模块的map指令遇到的常见问题。
    ngx_http_map_module请先看参阅的NginxMap指令文档后吧。这里的说明比较简略。基本使用Demohttp{map"beijing"$Name{default"中国";"beijing""北......
  • [Bug0058] maven报错maven-default-http-blocker (http://0.0.0.0/): Blocked mirror
    问题IntelliJIDEA2021.3+maven3.8.5更新依赖报错maven-default-http-blocker(http://0.0.0.0/):Blockedmirrorforrepositories场景IntelliJIDEA2021.3+m......
  • 在linu系统安装apache全过程(httpd、apr、apr-util、pcre)以及进行相应配置
    1.下载安装包,需要下面3个安装包[root@bes2apache]#ll总用量8520-rw-r--r--.1rootroot10208339月1817:47apr-1.5.1.tar.gz-rw-r--r--.1rootroot8744629月......
  • 彻底搞懂HTTPS的加密原理
    转自:https://zhuanlan.zhihu.com/p/43789231 HTTPS(SSL/TLS)的加密机制虽然是大家都应了解的基本知识,但网上很多相关文章总会忽略一些内容,没有阐明完整的逻辑脉络,我学习它......
  • http与https的区别到底是什么
    我们平常用的最多的就是HTTP代理,其实HTTP只是代理IP的一种协议,那么还有哪些协议是我们需要知道的呢?今天就给大家说说代理IP的几种支持的协议。1、HTTP超文本......
  • https价格与什么因素有关
    我们平时在做爬虫业务时,经常需要用到HTTP代理,市面上的代理套餐五花八门,那么如何知道HTTP套餐是否适合自己用呢?其价格又与什么因素有关呢?今天就带大家来一起学习一下。......
  • 如何知道HTTP套餐是否适合自己
    我们平时在做爬虫业务时,经常需要用到HTTP代理,市面上的代理套餐五花八门,那么如何知道HTTP套餐是否适合自己用呢?今天就带大家来一起学习一下。1、根据业务需求选择......
  • Chapter 12 - NSWindowController
    文章是基于之前的RaiseMan的例子修改的。为了避开申明Person类型和复杂的手动实现valuekey&value&remove&add的redo/undo,所以本例子采用CoreData+ArrayController......
  • C# 调用 MVC Controller 方法, 传递图片
    1.C#调用 MVCController 的方法,文字,图片当参数。2.http方法的参数只能是字符串,图片以byte[]二进制 传递。3.Newtonsoft.Json.JsonConvert.SerializeObject  会......