mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-10-30 03:48:03 +08:00
fix(network): normalize per-request cookie strings
This commit is contained in:
@@ -462,7 +462,7 @@ class RequestUtils:
|
||||
:param method: HTTP方法,如 get, post, put 等
|
||||
:param url: 请求的URL
|
||||
:param raise_exception: 是否在发生异常时抛出异常,否则默认拦截异常返回None
|
||||
:param kwargs: 其他请求参数,如headers, cookies, proxies等
|
||||
:param kwargs: 其他请求参数,如headers、cookies(字符串或字典)、proxies等
|
||||
:return: HTTP响应对象
|
||||
:raises: requests.exceptions.RequestException 仅raise_exception为True时会抛出
|
||||
"""
|
||||
@@ -473,7 +473,12 @@ class RequestUtils:
|
||||
kwargs["headers"] = with_correlation_header(
|
||||
kwargs.get("headers", self._headers)
|
||||
)
|
||||
kwargs.setdefault("cookies", self._cookies)
|
||||
request_cookies = kwargs.get("cookies")
|
||||
if isinstance(request_cookies, str):
|
||||
# requests 的请求准备阶段仅支持字典或 CookieJar,站点配置仍以字符串保存。
|
||||
kwargs["cookies"] = cookie_parse(request_cookies)
|
||||
else:
|
||||
kwargs.setdefault("cookies", self._cookies)
|
||||
kwargs.setdefault("proxies", self._proxies)
|
||||
kwargs.setdefault("timeout", self._timeout)
|
||||
kwargs.setdefault("verify", self._verify)
|
||||
|
||||
@@ -174,3 +174,24 @@ def test_request_utils_preserves_default_and_explicit_tls_verification() -> None
|
||||
|
||||
assert default_session.calls[0][2]["verify"] is False
|
||||
assert secure_session.calls[0][2]["verify"] is True
|
||||
|
||||
|
||||
def test_request_utils_normalizes_per_request_cookie_string(monkeypatch) -> None:
|
||||
"""单次请求传入 Cookie 字符串时应先转换为 requests 支持的字典。"""
|
||||
response = _make_response()
|
||||
session = requests.Session()
|
||||
prepared_requests = []
|
||||
|
||||
def fake_send(request, **_kwargs):
|
||||
prepared_requests.append(request)
|
||||
return response
|
||||
|
||||
monkeypatch.setattr(session, "send", fake_send)
|
||||
|
||||
result = RequestUtils(session=session).get_res(
|
||||
"https://example.com/data",
|
||||
cookies="sid=1; token=two",
|
||||
)
|
||||
|
||||
assert result is response
|
||||
assert prepared_requests[0].headers["Cookie"] == "sid=1; token=two"
|
||||
|
||||
Reference in New Issue
Block a user