預檢請求 OPTIONS preflight python 解決辦法
問題來源與 某易論壇問答區(qū) 提問的接口問題
原帖鏈接:https://bbs.125.la/forum.php?mod=viewthread&tid=14763950
網(wǎng)站鏈接:[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
提問者 遇到 接口問題 瀏覽器可以正常返回數(shù)據(jù) 使用puython? request 請求書據(jù)返回403*
瀏覽器 正常訪問 返回接口信息如下:

注意圖片里面的?OPTIONS??preflight??

這里是觸發(fā)了預檢請求 參考上面 什么是預檢請求 鏈接
由于瀏覽器在請求數(shù)據(jù)之前 會觸發(fā)預檢 在請求數(shù)據(jù)之前 會發(fā)送一個?OPTIONS 包 給服務器?
告訴服務器 我要 獲取數(shù)據(jù)了
請求獲取數(shù)據(jù) 的請求是 以 GET/POST 方式請求的?
請求格式是 json/或者是其他?
來源地址是 https://*******?
服務器接受到這個 預檢請求(OPTIONS?)包后 會判斷你是否通過請求或者拒接請求
服務器 響應通過 后 在返回 header 頭里 包含一下信息
在這個 里面 包含 允許的域名 Access-Control-Allow-Origi
之后 瀏覽器會發(fā)生 請求包 服務器 會正常返回?
但是在python 里面 requests 庫訪問的是后 構(gòu)造一個這樣的請求是 失敗的 原因不知道?
可能是我技術問題?
為了解決這個問題我 使用的 python selenium 庫 來操作 chrome 瀏覽器 來獲取數(shù)據(jù)?
下面是代碼部分 :
此貼作為記錄貼 以防之后忘掉
其他的我就不做多解釋了 為了解決這個問題翻閱了大量的 文章 哎
chromedevtools工具的開發(fā)文檔:
https://chromedevtools.github.io/devtools-protocol/tot/Network/
selenium?webdriver 模塊的開發(fā)文檔:https://www.selenium.dev/zh-cn/documentation/webdriver/
selenium 獲取請求數(shù)據(jù)文章鏈接:
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