크롬 요청에는 "임시 헤더가 표시됨"이라고 표시됩니다:
브라우저가 이 요청을 처음 보낼 때 요청이 차단되고 응답이 없습니다. 브라우저가 다시 이 요청을 보내도록 요청하면, 이전 요청에 응답하지 않았다면 이 경고를 보고합니다그렇다면 문제는 어디에 있을까요?
프로젝트에서 여러 번 이 상황을 접했고, 각각 다른 시나리오를 소개하겠습니다:
1. 모든 클라이언트의 브라우저에 접근할 때 임시 헤더가 표시됩니다:
대처 방법: 요청이 발생한 페이지를 확인해 양식 제출과 ajax 요청이 동시에 발생하는지 확인하세요.
예를 들어, 버튼을 정의하고, 타입은 submit이며, 버튼에 대한 ajax 이벤트를 정의합니다;
이 시나리오는 이전 개발 과정에서 발생한 사례 중 하나입니다
2. 일부 클라이언트 브라우저가 나타납니다
대처 방법: 크롬 chrome://net-internals/#events 에 전화한 후 요청을 다시 트리거한 뒤, 임시 헤더가 표시된 요청 로그를 확인하세요;
delegate_blocked_by 키워드가 존재하는지 확인해보세요; 이는 일반적으로 브라우저 플러그인이나 클라이언트 소프트웨어가 요청을 가로채기 때문입니다; 우리가 직면한 상황은 WebSense Endpoint에 의해 가로채고 있습니다;
만약 그렇다면, 사실상 무시해도 되고, 클라이언트 자신의 문제입니다; 플러그인이나 소프트웨어를 삭제하고 다시 시도해 보면 여전히 나타나는지 확인할 수 있습니다; 만약 여전히 발생한다면, 다음 조건에 해당하는지 확인해 주세요
3. 모든 클라이언트가 무작위로 가끔씩 이 오류가 발생했으며, 이런 경우에는 보통 서버 측 문제일 수 있습니다
처리 방법: 배포 아키텍처에 따라 문제 해결. 예를 들어, 우리 배포 아키텍처의 핵심 프로세스로는 nginx----> 게이트웨이 애플리케이션----> F5 로드 밸런서----> 애플리케이션 서버(docker) 등이 있습니다
계층별로 문제를 해결할 수 있습니다. 간단한 방법은 server shell 명령어로 for loop curl 요청을 직접 작성하고, 먼저 가장 낮은 애플리케이션 서버를 호출하는 것입니다(압력이 부족하면 여러 스레드로 눌러도 됩니다); 차례로 위를 누르고; 스트레스 테스트 과정에서 요청이 멈추는지 실시간으로 확인할 수 있습니다; 만약 발견된다면, 이 문제가 매우 높을 것입니다:
현재 두 가지 상황을 겪고 있습니다. 하나는 F5 수준에서 일부 요청이 애플리케이션 서버에 제대로 전달되지 않은 경우이며; 또한 nginx 수준에 멈춰 있는 상황도 있습니다;
해결책: F5 레벨의 부하 분산 전략이 성능 L4에서 표준으로 변경되었습니다.
nginx 수준 막힌 상황 처리 계획: 저는 실제로 이 상황에 직접 참여한 적이 없고, nginx 설정을 여러 번 수정해도 효과가 없으며, 결국 종료 후 재설치만 된다는 점을 이해하고 있습니다. 그래서 핵심 포인트를 찾지 못했습니다
제가 사용하는 Fiddler 4가 정상적으로 닫히지 않아서 Fiddler 4를 다시 열고 웹사이트를 요청했더니 정상으로 돌아왔고, 이때 다시 Fiddler 4를 닫았습니다.
|