mirror of
https://github.com/NeteaseCloudMusicApiEnhanced/api-enhanced.git
synced 2026-10-24 08:31:23 +08:00
fix: 修复 cookie 解析器并也尝试从请求头读 cookie
This commit is contained in:
@@ -6,7 +6,7 @@ const request = require('./util/request')
|
||||
const packageJSON = require('./package.json')
|
||||
const exec = require('child_process').exec
|
||||
const cache = require('./util/apicache').middleware
|
||||
const { cookieToJson } = require('./util/index')
|
||||
const { cookieToJson, getCookieHeader, hasCookie } = require('./util/index')
|
||||
const fileUpload = require('express-fileupload')
|
||||
const decode = require('safe-decode-uri-component')
|
||||
const logger = require('./util/logger.js')
|
||||
@@ -225,14 +225,15 @@ async function constructServer(moduleDefs) {
|
||||
*/
|
||||
app.use((req, _, next) => {
|
||||
req.cookies = {}
|
||||
//;(req.headers.cookie || '').split(/\s*;\s*/).forEach((pair) => { // Polynomial regular expression //
|
||||
;(req.headers.cookie || '').split(/;\s+|(?<!\s)\s+$/g).forEach((pair) => {
|
||||
let crack = pair.indexOf('=')
|
||||
if (crack < 1 || crack == pair.length - 1) return
|
||||
req.cookies[decode(pair.slice(0, crack)).trim()] = decode(
|
||||
pair.slice(crack + 1),
|
||||
).trim()
|
||||
})
|
||||
getCookieHeader(req.headers)
|
||||
.split(';')
|
||||
.forEach((pair) => {
|
||||
let crack = pair.indexOf('=')
|
||||
if (crack < 1 || crack == pair.length - 1) return
|
||||
req.cookies[decode(pair.slice(0, crack)).trim()] = decode(
|
||||
pair.slice(crack + 1),
|
||||
).trim()
|
||||
})
|
||||
next()
|
||||
})
|
||||
|
||||
@@ -291,13 +292,19 @@ async function constructServer(moduleDefs) {
|
||||
}
|
||||
})
|
||||
|
||||
let query = Object.assign(
|
||||
{},
|
||||
{ cookie: req.cookies },
|
||||
req.query,
|
||||
req.body,
|
||||
req.files,
|
||||
)
|
||||
const queryCookie = req.query && req.query.cookie
|
||||
const bodyCookie = req.body && req.body.cookie
|
||||
const fileCookie = req.files && req.files.cookie
|
||||
const cookie = hasCookie(fileCookie)
|
||||
? fileCookie
|
||||
: hasCookie(bodyCookie)
|
||||
? bodyCookie
|
||||
: hasCookie(queryCookie)
|
||||
? queryCookie
|
||||
: req.cookies
|
||||
const query = Object.assign({}, req.query, req.body, req.files, {
|
||||
cookie,
|
||||
})
|
||||
|
||||
try {
|
||||
let usedCrypto = ''
|
||||
|
||||
Reference in New Issue
Block a user