TommyLemon / APIAuto

☔ 敏捷开发最强大易用的接口工具,机器学习零代码测试、生成代码与静态检查、生成文档与光标悬浮注释,腾讯、华为、SHEIN、传音、工行等使用 ☔ The most advanced tool for HTTP API. Testing with machine learning, generating codes and static analysis, generating comments and floating hints. Used by Tencent, Huawei, SHEIN, TRANSSION, ICBC, etc.
http://apijson.cn/api
Apache License 2.0
1.94k stars 242 forks source link

解决 无法访问非同域名下的接口 或 登录后 Cookie 马上失效且自动退出登录 #9

Open TommyLemon opened 3 years ago

TommyLemon commented 3 years ago

Chrome 80+ 强制 same-site Cookie 的策略导致。

Chrome 94+ 可以以下方式 或 使用旧版(偶尔失效)

打开 tab 页面 chrome://flags/#block-insecure-private-network-requests 将其 Block insecure private network requests 设置为 Disabled, 然后重启就行了, 这样子就相当于把这个功能禁用掉。 image

Chrome 90+ 其它版本可以用以下方式(推荐,目前每次测试都有效)

先完全退出 Chrome,然后终端命令启动

open -n /Applications/Google\ Chrome.app/ --args --disable-features=SameSiteByDefaultCookies,CookiesWithoutSameSiteMustBeSecure --disable-web-security --user-data-dir=~/MyChromeDevUserData/

会有一个报错弹窗:Chrome 无法对目录 MyChromeDevUserData 进行写入操作。 点击确定会启动开发调试模式的 Chrome,浏览器地址栏下会多出一栏:

image

然后再按以下方式修改 Chrome 设置

Chrome 87 以下可以修改 Chrome 设置

https://www.cnblogs.com/jingmo0319/p/13402645.html 还不行再试试把设置项 Reduce default 'referer' header granularity 改为 Enabled。 image

或安装和使用浏览器插件 Access-Control-Allow-Origin

https://chrome.google.com/webstore/detail/allow-cors-access-control/lhobafahddgcelffkeicbaginigeejlf

Chrome 87-89 目前经测试只能以关闭安全验证模式启动 Chrome(推荐,目前每次测试都有效)

Windows

Chrome.exe 文件快捷方式中属性 目标 添加

--disable-web-security --user-data-dir

具体见 https://www.cnblogs.com/q149072205/p/12162233.html

MacOS

终端输入命令

open -n -a /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \ --args --user-data-dir="/tmp/chrome_dev_test" --disable-web-security

具体见 https://www.jianshu.com/p/2db73311fcbe/

如果以上都不行,或者还存在登录态总是失效问题

可以把 APIAuto 源码部署到和被测服务同一域名(最好是同一机器,SpringBoot 项目可放在 static 目录), 参考 APIAuto 使用的后端 APIJSONBoot-MultiDataSource https://github.com/APIJSON/APIJSON-Demo/tree/master/APIJSON-Java-Server/APIJSONBoot-MultiDataSource

或者直接用旧版 Chrome(80 以下) https://www.slimjet.com/chrome/google-chrome-old-version.php

TommyLemon commented 2 years ago

百度、搜狗、抖音公网接口调用演示 https://github.com/TommyLemon/APIAuto/issues/16