it-source

Safari를 통해 허가된 HTTPS 요청이 작동하지 않음

criticalcode 2023. 2. 22. 22:15
반응형

Safari를 통해 허가된 HTTPS 요청이 작동하지 않음

맥락

HTTPS를 통한 Authorization 헤더를 가진 XHR 요청은 Safari(IOS 및 MacOS)를 사용하여 서버에 도달하지 않습니다.하지만 IE, Chrome, Firefox에서 작동합니다.

Letsencrypt에 의해 생성된 유효한 증명서를 사용하고 있는데 브라우저에 경고가 표시되지 않습니다.

Safari 의 Web 인스펙터에서는, 이러한 XHR 는, 타임 아웃이 되어 에러가 표시되지 않을 때까지 결과를 취득하려고 합니다.

도메인은 하나이고 하위 도메인은 없습니다.

시험

  • 인증 헤더 + HTTPS => 기능하지 않음
  • 허가 헤더 + HTTPS 없음(HTTP) => 기능
  • 인증 헤더 없음 + HTTPS => 동작

코드

인증 헤더를 설정하기 위해 가로채기를 사용합니다.

this.request = (config) => {
    config.headers = config.headers || {};
    var authData = localStorageService.get('authorizationData');
    if (authData && config.url && !config.url.endsWith("/token")) {
        config.headers = {
            "Authorization": 'Bearer ' + authData.access_token
        };
        config.withCredentials = true;
    }
    return config;
}

같은 문제가 발생한 적이 있습니까?

업데이트 1

Safari + HTTPS + "Authorization" 헤더에 문제가 있습니다."MyHeader"에 의해 "Authorization"의 이름을 변경하고 서버에서 "MyHeader" 토큰을 사용하여 내 베어러 토큰을 가져오도록 수정하면 모든 것이 잘 작동합니다.

"Authorization" 헤더는 safari에서 HTTPS를 사용하는 보호어입니까?

사파리에서 헤더에 있는 'Authorization'이 GET 요청으로 전송되지 않은 것과 유사한 문제에 직면했지만, 결국 단순하게 되었습니다.

요청 URL 끝에 '/'를 추가하기만 하면 됩니다.

예: URL을 '/token'에서 '/token/'로 변경합니다.

safari를 통해 이루어지는 HTTP 요청이 다음과 같은 단어를 포함하는 URL에 대해 이루어지는 경우login,token등...safari는 자동으로 추가됩니다.Accept-Encoding알에게 영향을 주는 머리글

코드를 실행하고 있는 디바이스에 액세스하여 사이트 간 추적을 방지하는 safari 설정을 변경해야 하는 문제를 해결하려면 이 방법이 좋습니다.

제 경우, Laravel을 사용하면 .htaccess에 의해 삭제된 슬래시일 뿐입니다.명백한 이유로 리다이렉트가 있는 경우 헤더는 전송되지 않습니다.

언급URL : https://stackoverflow.com/questions/35684933/https-requests-with-authorization-not-working-via-safari

반응형