欢迎光临散文网 会员登陆 & 注册

预检请求 OPTIONS preflight python 解决办法

2023-02-16 23:12 作者:書坤  | 我要投稿

问题来源与 某易论坛问答区 提问的接口问题

原帖链接:https://bbs.125.la/forum.php?mod=viewthread&tid=14763950

网站链接:[https://visa.vfsglobal.com/chn/zh/ita/login](http://)

接口链接:[https://lift-api.vfsglobal.com/master/nationality/zh-CN](http://)

什么是预检请求:

参考链接:https://blog.csdn.net/sinat_36521655/article/details/104800906?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-4-104800906-blog-124342081.pc_relevant_aa&spm=1001.2101.3001.4242.3&utm_relevant_index=7

提问者 遇到 接口问题 浏览器可以正常返回数据 使用puython  request 请求书据返回403*

浏览器 正常访问 返回接口信息如下:

注意图片里面的 OPTIONS  preflight  

这里是触发了预检请求 参考上面 什么是预检请求 链接
由于浏览器在请求数据之前 会触发预检 在请求数据之前 会发送一个 OPTIONS 包 给服务器 

告诉服务器 我要 获取数据了
请求获取数据 的请求是 以 GET/POST 方式请求的 
请求格式是 json/或者是其他 
来源地址是 https://******* 
服务器接受到这个 预检请求(OPTIONS )包后 会判断你是否通过请求或者拒接请求
服务器 响应通过 后 在返回 header 头里 包含一下信息

在这个 里面 包含 允许的域名 Access-Control-Allow-Origi
之后 浏览器会发生 请求包 服务器 会正常返回 

但是在python 里面 requests 库访问的是后 构造一个这样的请求是 失败的 原因不知道 
可能是我技术问题 
为了解决这个问题我 使用的 python selenium 库 来操作 chrome 浏览器 来获取数据 
下面是代码部分 :

此贴作为记录贴 以防之后忘掉

其他的我就不做多解释了 为了解决这个问题翻阅了大量的 文章 哎

chromedevtools工具的开发文档:

https://chromedevtools.github.io/devtools-protocol/tot/Network/

selenium webdriver 模块的开发文档:

https://www.selenium.dev/zh-cn/documentation/webdriver/

selenium 获取请求数据文章链接:
https://blog.csdn.net/weixin_45081575/article/details/126551260?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167656009916800182770241%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167656009916800182770241&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-126551260-null-null.142^v73^insert_down3,201^v4^add_ask,239^v2^insert_chatgpt&utm_term=selenium%E8%8E%B7%E5%8F%96%E6%8E%A5%E5%8F%A3%E6%95%B0%E6%8D%AE&spm=1018.2226.3001.4187



预检请求 OPTIONS preflight python 解决办法的评论 (共 条)

分享到微博请遵守国家法律