shenruisi / Stay

Stay is a local userscript manager and an extension sample for Safari on iOS/iPadOS.
https://github.com/shenruisi/Stay/wiki
Mozilla Public License 2.0
1.08k stars 65 forks source link

关于GM_xmlHttpRequest请求携带Cookie的问题 #78

Open SudoSuBash opened 1 year ago

SudoSuBash commented 1 year ago

你好,Stay的创作团队: 我在编写插件的时候发现GM_xmlHttpRequest在Stay里面似乎不能携带Cookie请求API. 我写的这个插件在Userscript和Tampermonkey都可以正常请求API并且获取正确的信息,但是唯独在Stay中运行,在请求API的时候返回了"验证失败,请重新登录"的数据,经过Postman进一步分析得出是Cookie的原因. 有什么办法能让GM_xmlHttpRequest函数携带Cookie请求API呢? 这是出问题的代码:

GM_xmlhttpRequest({
            method: "GET",
            url: <url>,
            headers:<headers>,
            onload: (res) => {
                resolve(res)
            })

通过这段代码访问API时,不能够携带本地Cookie而导致API返回"验证失败,请重新登录". 已经试过并且无效的方法:

GM_xmlhttpRequest({
            method: "GET",
            url: <url>,
            headers:<headers>,
            anonymous: true,
           cookie: document.cookie,
            onload: (res) => {
                resolve(res)
            })

恳请Stay开发团队修复一下这个Bug或者给出一个解决方案!谢谢!

一个开发者, 2023.8.2

imdabao commented 5 months ago

我也遇到了这个问题,使用document.cookie无法获取到httponly的cookie,比如:session。使用GM_cookie能获取到,但是貌似不支持GM_cookie吧,我还没有试。

你可以试下:

GM_xmlhttpRequest({
            method: "GET",
            url: <url>,
            headers:{
                "Cookie":"k1=v1;k2=v2"
             },
            anonymous: true,
            onload: (res) => {
                resolve(res)
            })
SudoSuBash commented 5 months ago

我也遇到了这个问题,使用document.cookie无法获取到httponly的cookie,比如:session。使用GM_cookie能获取到,但是貌似不支持GM_cookie吧,我还没有试。

你可以试下:

GM_xmlhttpRequest({
            method: "GET",
            url: <url>,
            headers:{
                "Cookie":"k1=v1;k2=v2"
             },
            anonymous: true,
            onload: (res) => {
                resolve(res)
            })

这好像并不能解决我的问题(我当时试过)。这种传递cookie的方式也不能应用在tampermonkey上。现在我的脚本已经放弃了对stay的支持。