Просмотр исходного кода

fix(api): обработка 204 No Content без попытки парсинга пустого тела

neyrogovnarik 2 недель назад
Родитель
Сommit
679cdd7558
1 измененных файлов с 4 добавлено и 1 удалено
  1. 4 1
      frontend/src/lib/api.ts

+ 4 - 1
frontend/src/lib/api.ts

@@ -22,7 +22,9 @@ export function hasSessionCookie(): boolean {
 }
 
 export function setSessionCookie(): void {
-  document.cookie = `session=1; path=/; max-age=${SESSION_COOKIE_AGE}; SameSite=Lax`
+  const isSecure = typeof location !== 'undefined' && location.protocol === 'https:'
+  const sameSite = isSecure ? 'Strict' : 'Lax'
+  document.cookie = `session=1; path=/; max-age=${SESSION_COOKIE_AGE}; SameSite=${sameSite}${isSecure ? '; Secure' : ''}`
 }
 
 export function clearSessionCookie(): void {
@@ -106,6 +108,7 @@ async function request<T>(
     throw new ApiRequestError(res.status, message, errBody)
   }
 
+  if (res.status === 204) return undefined as T
   return res.json()
 }