Closed estoi closed 5 years ago
将 until/request.js 里面的 request.debug = true
取消注释看一下有没有带 cookie,也可能是 cookie-parser 的问题 ……
将 until/request.js 里面的
request.debug = true
取消注释看一下有没有带 cookie,也可能是 cookie-parser 的问题 ……
cookie是空的
REQUEST { method: 'POST',
url: 'https://music.163.com/weapi/v1/discovery/recommend/resource',
headers:
{ 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1',
'Content-Type': 'application/x-www-form-urlencoded',
Referer: 'https://music.163.com',
Cookie: '' },
@nondanee
请确认一下 wx.getStorageSync('cookie')
有没有数据,比如写在 URL 里
cookie-parser 在 app.js 里,可以 log 一下 req.headers.cookie,个人感觉不是 parser 的问题
@nondanee wx.getStorageSync('cookie')
有数据,是一个数组格式的
@estoi 那应该要做一下 .join('; ')
吧(是分号)
@nondanee 尝试过join(';')
在network request header 里面可以看到cookie 但是 debug
里面cookie还是空
试试看在 app.js#L37-38 加上 console.log(req.headers.cookie)
输出一下 cookie
:disappointed_relieved: undefined
{ host: 'localhost:6324', connection: 'close' }
@nondanee
@estoi 那应该就是你自己的问题咯😂,截个 network request header 的图看看(记得打码)
@nondanee
@estoi
格式不对哈
你应该是直接用了 response header set-cookie
的数据
在 request header 里要处理一下,把 expires, path, httponly 去掉 (这些是给浏览器存储 cookie 的参数)
正确格式应该是 MUSIC_U=xxxx; __csrf=xxxx; ...
这样的
可以看一下 MDN 的资料 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Set-Cookie https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Cookie https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#The_Set-Cookie_and_Cookie_headers
@nondanee thanks! 我去试试:+1:
@nondanee 按照你说的格式 还是不行呀
@estoi 这样吧,你从 music.163.com 复制一个 cookie 过来硬编码填进去试试看可不可以
我在 Android端也遇到了类似的问题,传了cookie也不起作用。再浏览器里倒是可以的,觉得还是兼容性问题
music.163.com 复制一个 cookie ,在微信小程序里设置了cookies也没有
把登陆成功以后的这个 res.header['set-cookie'] 存起来,调用要登陆的接口的时候 header: { cookie: 获取你存起来的变量 } 这样应该就行了,我成功了。
代码都是可以改的,可以把 cookies 存到本地变量,发送请求的时候再带出去
环境
系统: macOs nodejs 版本:8.0.0
出现问题
在小程序中使用官方的wx.request发送请求 在header带了cookie(登录接口返回的) 然后请求需要登录的接口仍然提示需要登录
重现步骤
期待效果
接口正常返回数据