Файлы cookie Django HttpOnly не сохраняются в iOS Safari и WebView, но работают в Chrome и Android ITP

Я использую Django для установки HttpOnly и защиты файлов cookie для моего веб-приложения React. Эти файлы cookie отлично работают на устройствах Chrome (как настольных, так и мобильных) и Android.

Однако я столкнулся с серьезной проблемой в iOS:

-iOS Safari: файлы cookie не сохраняются; они обрабатываются как сессионные файлы cookie и удаляются при закрытии браузера.

-iOS React Native WebView: как и в Safari, файлы cookie не сохраняются.

-IOS Chrome: это работает.

-Android React Native WebView: это работает.

MAX_AGE = 60 * 60 * 24 * 360

COMMON = {
    "httponly": True,
    "secure": True,
    "samesite": "None",      
    "path": "/",
    "domain": ".myweb.net",   
    "max_age": MAX_AGE,
}

def set_auth_cookies(response, access_token: str, refresh_token: str):
    response.set_cookie("refresh_token", refresh_token, **COMMON)
    response.set_cookie("access_token",  access_token,  **COMMON)
    return response

Я подтвердил, что для параметра max_age задан длительный срок действия, поэтому он не является сеансовым файлом cookie. Похоже, что эта проблема характерна для экосистемы iOS.

Что может быть причиной такого поведения в iOS Safari и WebView, и как я могу убедиться, что эти файлы cookie сохраняются должным образом?

<WebView
          ref={webRef}
          source={{ uri: WEB_URL }}
          style={styles.full}

          /* COOKIE PERSIST */
          sharedCookiesEnabled
          thirdPartyCookiesEnabled
          incognito={false}

          /* FIX */
          javaScriptEnabled
          domStorageEnabled
          allowsInlineMediaPlayback
          allowsFullscreenVideo
          mediaCapturePermissionGrantType="grant"
          startInLoadingState
          cacheEnabled={false}

          injectedJavaScriptBeforeContentLoaded={INJECT_BEFORE}
          injectedJavaScriptBeforeContentLoadedForMainFrameOnly={false}
          onMessage={handleWebViewMessage}
          onLoadEnd={() => {
            setLoadedOnce(true);
            lastLoadEndAt.current = Date.now();
            failCount.current = 0;
            if (healthTimer.current) {
              clearTimeout(healthTimer.current);
              healthTimer.current = null;
            }
          }}
          onContentProcessDidTerminate={() => webRef.current?.reload()}
          onRenderProcessGone={() => webRef.current?.reload()}
          onShouldStartLoadWithRequest={() => true}
          setSupportMultipleWindows={false}
          onError={() => setTimeout(() => webRef.current?.reload(), 300)}
          renderError={({ description }) => <Text style={styles.err}>⚠️ {description}</Text>}
          onHttpError={(e) =>
            console.log("HTTP", e.nativeEvent.statusCode, e.nativeEvent.description)
          }
        />

Что может быть причиной такого поведения в iOS Safari и WebView, и как я могу убедиться, что эти файлы cookie сохраняются должным образом?

Вернуться на верх