1

Chrome에서 일부 HTTP 요청을 취소하는 데 문제가 있으며 캐시 된 인증 데이터가 원인으로 의심됩니다. 우선 제가 작성한 응용 프로그램에 대한 몇 가지 중요한 요소를 적어 보겠습니다.크롬 기본 인증 및 다이제스트 인증 문제

  1. 내 웹 응용 프로그램에서 여러 서비스와 자원을 보호하기 위해 몇 시간 동안 기본 인증 방식을 사용했다.
  2. 그동안 Google은 주 Google 계정을 완전히 동기화하여 Chrome을 사용하여 앱을 테스트/사용하고있었습니다. 가장 자주 나는 Basic Auth의 사용자 이름으로 "lukasz"라는 내 이름을 사용하고있었습니다.
  3. 최근에 내 응용 프로그램을 다이제스트 인증으로 바 꾸었습니다.
  4. 지금, 일부 HTTP 요청은 명백한 이유없이 status=failed으로 실패하고 있습니다. 다른 고유 한 사용자 이름을 입력하면 사용자 "lukasz"를 사용할 때만 문제가 발생합니다.

나는 백엔드와 프런트 엔드 어디에서나 보았고 코드에서 문제를 찾을 수 없었다. 매번 사용자 "lukasz"와 (과) 쉽게 재현 할 수 있습니다. 그래서 내 코드를 Basic Auth (앱의 나머지 부분은 건드리지 않고)로 되돌려 놓았습니다. 문제는 사라졌습니다.

이렇게하면 캐시 된 암호에 문제가 있다고 생각하게되었습니다. Chrome에서 캐시를 삭제했지만 도움이되지 않았습니다. 몇 시간 동안 문제를 분석 한 후 Chrome의 새로운 인스턴스를 실행하기로 결정 했으므로 재설치 (디스크 데이터 삭제 중)했습니다. 타다 파! 문제가 없어졌고 더 이상 이것을 재현 할 수 없었습니다. 그렇다면 이 새로 설치된 Chrome으로 내 Google 계정을 동기화했으며 잠시 후 에 내 앱에 대한 요청이 다시 시작되지 않았습니다. !! 그래서 (디스크에서 프로파일 데이터를 지우고 모든 단계를 다시 수행하는)이 작업을 자세히 살펴 보았고 실제로 계정이 클라우드와 동기화되는 즉시 문제가 시작되는 것처럼 보였습니다!

그래, 나는 그것이 dodgy 소리 알아. 그것은 우스꽝스럽게 들린다. 바보 같아. 그러나 나는이 두 문제가 어떻게 든 관련이 있다고 확신한다 (실패한 요청과 계정 동기화).

내 아이디어는 다음과 같습니다. Chrome은 특정 서비스에 대해 기본 인증과 함께 "lukasz/my-pass"를 사용하고 있음을 기억합니다. Digest Auth로 전환 한 후 같은 자격 증명 조합 (lukasz/my-pass)이 이제 재미 있습니다. 아마 후드 아래에서 Chrome은 여전히 ​​Basic Auth라고 생각하고 달리 배울 때 요청을 취소합니까?

UPDATE : 나는 chrome://net-internals/과 일부 낮은 수준의 디버깅을 한 적이 그리고 캐시 항목을 읽는 동안 문제가 있음을 나타납니다. 이것은 나의 초기 가정을 증명하는 것으로 보인다. 조사를 한 결과 this article입니다. 분명히 항상 http 응답에 "Last-Modified"헤더를 추가하면 Chrome에서 문제가 해결되었습니다 (아직 FF로는 문제가 있지만 주제는 벗어남). 그러나 여전히 문제는 완전히 해결되지 않습니다. 요청이 처음부터 실패한 이유는 무엇입니까?

답변

0

시크릿 모드를 사용해보고 어떤 일이 발생하는지 볼 수 있습니다. 캐시를 지우거나 Chrome을 다시 설치하지 않고도 힌트를 얻을 수 있습니다.

How to clear basic authentication details in chrome

+0

시크릿 모드는 동일하게 동작합니다. –

+0

크롬이 인증 구성표를 선택하는 명령 줄 스위치가 있습니다. 이것은 테스트에 도움이 될 수 있습니다. --auth-schemes : 활성화 할 HTTP 인증 체계. 이것은 인증 스키마 (기본, 다이제스트, ntlm 및 협상)의 쉼표로 구분 된 목록입니다. 기본적으로 모든 구성표가 사용됩니다. 이 명령 줄 플래그의 주요 용도는 최종 사용자가보고 한 인증 관련 문제를 분류하는 것입니다. – Amitabh

+0

예, 시도했습니다. 아무것도 변하지 않았다. 적절한 방법이 항상 선택되도록하려면이 인수에 digest 옵션 만 사용했습니다. –