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
'it-source' 카테고리의 다른 글
헤더에서 워드프레스 피드 URL을 삭제/제거하는 방법 (0) | 2023.02.22 |
---|---|
속편 - 데이터베이스 결과의 JSON 개체만 반환하려면 어떻게 해야 합니까? (0) | 2023.02.22 |
Spring Security OAuth2와 Spring Social 통합 (0) | 2023.02.18 |
쇼트 코드 출력 추가쇼트 코드 출력 추가새 줄 뒤에새 줄 뒤에 (0) | 2023.02.16 |
Oracle insert(존재하지 않는 경우) 문 (0) | 2023.02.16 |