当前位置:网站首页>Charles通过Rewrite越过OPTIONS请求拦截
Charles通过Rewrite越过OPTIONS请求拦截
2022-07-30 06:15:00 【前端码农小王】
前言
身为一个前端小菜鸟,总是有一个飞高飞远的梦想,因此,每点小成长,我都想要让它变得更有意义,为了自己,也为了更多值得的人
开开心心学技术大法~~

来了来了,他真的来了~
正文
场景
经常移动端开发的大家应该都用过charles的map local代理请求资源到本地这样的功能,或者类似的。
有一种场景是,要代理的请求是跨域CORS请求,且请求是复杂请求,所以在发送真正的post请求前会有options预检请求。
如果我们代理了这个域名到本地,就会连options请求也被代理,但是直接map local到本地资源之后默认的response header是不符合options请求对于reponse header的要求的。
导致请求到options就会被终止,没办法走到真正的post请求来。
所以我们的map local并没有真正的成功。
解决思路
那怎样绕过OPTIONS请求呢?或者说能否模拟成OPTIONS请求?
答案是肯定的,我们可以通过charles的rewrite来重写map的请求的response header,重点是模拟options的请求头。
分析OPTIONS请求
模拟OPTION请求的response header关键是这三个字段
Access-Control-Allow-Origin告诉客户端允许的originAccess-Control-Allow-Headers告诉客户端允许传递的headersAccess-Control-Allow-Methods告诉客户端允许使用的请求methods
当然你也可以将涉及到CORS的字段补齐,再添上
Access-Control-Allow-Credentials告诉客户端是否允许添加cookieAccess-Control-Expose-Headers告诉客户端响应头允许暴露的headers
rewrite功能详解
从Charles的Tools上选择Rewrite...,或者快捷键cmmand + shift + r唤起rewreite弹框。
具体如下:

我们根据上面标的序号来描述下大概功能
1.是否开启rewrite功能
2.新增一个新的rewrite的条目
3.新增一个要rewreite的请求url
4.在上面选中的请求url上新增你的重写规则
前面三步不需要多说,正常操作就可,第四步点击之后会出现一个Rewrite Rule的弹窗

从上面我们我们可以看到
Type是我们要rewrite的类型
正式rewrite
依据上面我们分析的OPTION请求的关键字段,我们只需要依次将要rewreite的字段录入即可
1.打开rewrite弹窗,录入要重写的请求url
2.唤起重写规则弹窗来新增重写规则
3.Type选为Add Header
4.New的Name录入Access-Control-Allow-Origin,Value录入允许跨域的origin(或者直接参考map之前的正常OPTION请求的内容,这个最为简洁方便)
5.点击ok
6.重复3,4,5步骤,直到录入所有要录入的字段
7.之后点击rewrite弹窗的ok,记得要确认下是否已经开启了重写规则
享受成果
之后再次请求接口,发现之前的预检接口可以正常返回,并且不影响真正接口的请求。
这是预检请求的具体信息

真正请求也可以正常返回

边栏推荐
猜你喜欢

Universal js time date format conversion

【MySQL】MySQL中如何实现分页操作

What new materials are used in the large aircraft C919?

redis实现分布式锁的原理

The introduction of AI meta-learning into neuroscience, the medical effect is expected to improve accurately
获取controller中所有接口路径和名称

DP5340 domestic replacement for CM5340 stereo audio A/D converter chip

C language custom types, rounding

物联网网关该怎么选

The first artificial intelligence safety competition officially launched
随机推荐
Universal js time date format conversion
redis常用指令
Develop common tool software
01 多线程与高并发 - 基础概念
MYSQL 主从恢复锁表后, 处理SQL 线程锁解决.
02 多线程与高并发 - synchronized 解析
入选“十大硬核科技”,详解可信密态计算(TECC)技术点
golang: Gorm configures Mysql multiple data sources
五号黯区靶场 mysql 注入之limit注入记录
assert
包含min函数的栈(js)
Keil compile size and storage instructions
2020 ACM | MoFlow: An Invertible Flow Model for Generating Molecular Graphs
ArrayList
谷粒商城--环境部署(2022/7/28最新)
IDEA search plug-in has no results and the solution has been spinning in circles
[硬核干货]由0到1,突破信息系统项目管理师(呕心沥血经验之谈)!!!
go : go-redis set操作
MYSQL下载及安装完整教程
go : use gorm to modify data