Support non-standard Cookies (#745)
This commit is contained in:
parent
8263e92e29
commit
b454b1c4f2
|
@ -301,7 +301,7 @@ export class Headers implements Iterable<[Word, Word | null]> {
|
|||
export type Cookie = [Word, Word];
|
||||
export type Cookies = Array<Cookie>;
|
||||
|
||||
export function parseCookiesStrict(cookieString: Word): Cookies | null {
|
||||
export function parseCookies(cookieString: Word): Cookies | null {
|
||||
const cookies: Cookies = [];
|
||||
for (let cookie of cookieString.split(";")) {
|
||||
cookie = cookie.replace(/^ /, "");
|
||||
|
@ -316,19 +316,3 @@ export function parseCookiesStrict(cookieString: Word): Cookies | null {
|
|||
}
|
||||
return cookies;
|
||||
}
|
||||
|
||||
export function parseCookies(cookieString: Word): Cookies | null {
|
||||
const cookies: Cookies = [];
|
||||
for (let cookie of cookieString.split(";")) {
|
||||
cookie = cookie.trim();
|
||||
if (!cookie) {
|
||||
continue;
|
||||
}
|
||||
const [name, value] = cookie.split("=", 2);
|
||||
cookies.push([name.trim(), (value || "").trim()]);
|
||||
}
|
||||
if (new Set(cookies.map((c) => c[0])).size !== cookies.length) {
|
||||
return null;
|
||||
}
|
||||
return cookies;
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ import type {
|
|||
SrcDataParam,
|
||||
} from "./curl/opts.js";
|
||||
|
||||
import { Headers, parseCookies, parseCookiesStrict } from "./Headers.js";
|
||||
import { Headers, parseCookies } from "./Headers.js";
|
||||
import type { Cookies } from "./Headers.js";
|
||||
|
||||
import { pickAuth, type AuthType } from "./curl/auth.js";
|
||||
|
@ -803,7 +803,7 @@ function buildRequest(
|
|||
const cookieFiles: Word[] = [];
|
||||
const cookieHeader = headers.get("cookie");
|
||||
if (cookieHeader) {
|
||||
const parsedCookies = parseCookiesStrict(cookieHeader);
|
||||
const parsedCookies = parseCookies(cookieHeader);
|
||||
if (parsedCookies) {
|
||||
cookies = parsedCookies;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
#!/usr/bin/env sh
|
||||
|
||||
curl -i 'http://localhost:8888/' -b 'a=b; c'
|
|
@ -0,0 +1,7 @@
|
|||
import requests
|
||||
|
||||
headers = {
|
||||
'Cookie': 'a=b; c',
|
||||
}
|
||||
|
||||
response = requests.get('http://localhost:8888/', headers=headers)
|
Loading…
Reference in New Issue