Fiddler가 실행되지 않으면 NTLM 인증이 JS 파일에 대해 작동하지 않습니다.

매튜 알덴

NTLM (Windows) 인증을 사용하여 IIS에서 ASP.NET 4 앱을 실행하고 있습니다. 다른 모든 인증 체계는 비활성화됩니다. 서버에 성공적으로 인증 할 수 있습니다. 그러나 성공적으로 인증 한 후에도 Javascript 파일을 요청할 때 서버 (아래 설명 된 특정 상황에서)는 여전히 401 Unauthorized 오류를 반환합니다. JS 파일을 다운로드 할 권한이없는 이유는 무엇입니까?

물론 NTLM의 작동 방식을 완전히 이해하지는 못하지만 보호 된 리소스를 요청할 때 다음과 같은 일이 발생할 것으로 예상합니다.

  1. localhost : 444에 요청합니다 (예, 올바른 포트입니다).
  2. 인증되지 않았으므로 IIS는 내 웹 브라우저에 401을 반환합니다.
  3. 내 웹 브라우저는 사용자 이름과 비밀번호를 입력 할 수있는 팝업을 제공해야한다는 것을 이해합니다. 그렇게합니다.
  4. 브라우저와 IIS는 NTLM 인증 흐름을 수행합니다. (tbh, 자세한 내용은 모르겠습니다.) 인증에 성공했습니다. 브라우저는 1 단계에서 원래 요청을 다시 요청하는 것을 이해합니다.
  5. IIS는 index.html을 반환합니다.
  6. Index.html은 CSS 파일과 일부 JS 파일을 참조합니다. 브라우저는 이러한 파일을 요청합니다.
  7. IIS는 이러한 파일을 반환합니다.

이 원하는 기능은 일반적으로 작동합니다. Firefox, Chrome 78 또는 Chrome 83에서 사이트에 액세스 할 때 모든 것이 예상대로 작동합니다. 그러나 Chrome 70을 사용하여 사이트에 액세스하면 대신 다음이 발생합니다.

  • 1 ~ 5 단계는 위에서 설명한대로 올바르게 작동합니다.
  1. Index.html은 CSS 파일과 일부 JS 파일을 참조합니다. 브라우저는 이러한 파일을 요청합니다.
  2. IIS는 CSS 파일을 반환하지만 JS 파일에 대해 401 오류를 반환합니다 .

그러나 Fiddler를 켜고 https를 사용하고 있기 때문에 https를 해독하도록 구성했을 때 Chrome 70은 Firefox 및 Chrome 78 및 Chrome 83과 마찬가지로 올바르게 작동하기 시작했습니다. Fiddler를 다시 끄고 동일한 오류 (JS 파일에서)가 다시 발생했습니다.

문제가 무엇인지 아는 사람이 있습니까?

감사!

매튜 알덴

문제는 인증이 아닙니다. 인증이 올바르게 작동했습니다.

문제는 Angular 8/9 및 Chome 70에서 발생했습니다. 이 게시물 을 통해 문제를 설명하는 이 포럼 스레드발견 할 수있었습니다.

결과적으로 Angular 8은 index.html이 script태그 형식을 지정 하는 방식을 변경했습니다 . Angular 8+에서 태그는 JS 모듈 등을 사용하며 JS 모듈을 지원하지 않는 브라우저를위한 대체 기능을 포함합니다. 그러나 Chrome 70 (및 기타 가능)은 JS 모듈을 제대로 지원 하지 않는 것 같습니다 (Chrome 70이 수행하는 작업과 수행하지 않는 작업의 정확한 뉘앙스를 이해하지 못함). 따라서 JS 모듈을 지원하지 않는 브라우저에 대해 폴백을 사용하는 대신 Chrome 70은 JS 파일에 대해 잘못된 형식의 요청을 한 것으로 보입니다. 특히 Chrome 70은 JS 파일을 요청했지만 MIME 유형을 "text / javascript"대신 "text / plain"으로 요청했습니다. IIS가이 잘못된 요청을 받았을 때 401 오류를 반환했습니다. (나는 그것이 400 오류를 반환한다고 생각했을 것이지만 무엇이든간에.)

Fiddler를 켜면 문제가 해결 된 이유를 모르겠습니다. 아마도 Fiddler가 (가정) 잘못된 헤더를 다시 올바른 것으로 변경하고 있었을까요? 모르겠어요.

해결책 은 간단합니다. tsconfig.json 파일에서 대상을 "es2015"대신 "es5"로 설정하기 만하면됩니다 (또는 향후 기본값이되는 다른 항목). es5로 컴파일하면 Chrome 70을 혼동하는 기능을 사용하지 않습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

사용자가 대체 테이블에 저장되면 인증이 작동하지 않습니다.

분류에서Dev

DonutOutputCache가 이미지에 대해 작동하지 않습니다.

분류에서Dev

파일에 "azuremediaplayer.min.js"가 포함되어 있지 않으면 Azure 미디어 플레이어가 작동하지 않습니다.

분류에서Dev

새 이미지가 beer-reveal에로드되면 Beerslider.js가 제대로 작동하지 않습니다.

분류에서Dev

tapGesture가 레이블에 대해 작동하지 않습니다.

분류에서Dev

srihash.org가 cesiumjs.org의 .js 파일에 대해 작동하지 않습니다.

분류에서Dev

Outlook BUG- "이 메시지 다시 보내기"가 .EML 파일에 대해 작동하지 않습니다.

분류에서Dev

미디어 플레이어가 실행 중일 때 애니메이션을 시작하려면 어떻게해야합니까? 미디어 플레이어가 실행되지 않으면 애니메이션도 실행되지 않습니다.

분류에서Dev

vimrc : "filetype detect"가 처음 실행되지 않으면 & ft 확인이 작동하지 않습니다.

분류에서Dev

jquery .load ()에 의해로드 된 페이지에서 Node.js가 제대로 작동하지 않습니다.

분류에서Dev

SelectedIndexChanged가 ComboBox에 대해 실행되지 않습니다.

분류에서Dev

js 파일에 연결이 작동하지 않습니다.

분류에서Dev

.gitignore가 폴더 내의 파일에 대해 작동하지 않습니다.

분류에서Dev

버튼 클릭이 대기열에 추가되고 스크롤하지 않으면 실행되지 않습니다.

분류에서Dev

문자열에 Perl에`\ n`이 포함되어 있으면 대체가 작동하지 않습니다.

분류에서Dev

Resharper 코드 서식이 html 파일에 대해 작동하지 않습니다.

분류에서Dev

angular.js로 인해 다른 jQuery 플러그인이 실행되지 않고 콘솔에 오류가 발생하지 않을 수 있습니까?

분류에서Dev

ID 버튼이있는 페이지 외부에 배치하면 JS가 실행되지 않습니다.

분류에서Dev

파이썬 목록 이해가 예상대로 작동하지 않습니다.

분류에서Dev

"X 일 이상 실행되면 작업 중지"가 작동하지 않음

분류에서Dev

파이썬 튜플 비교가 다음보다 작은 배수에 대해 작동하지 않습니다.

분류에서Dev

특정 명령에 대한 파일 인수에 대해 탭 완성이 작동하지 않습니다.

분류에서Dev

회사 VPN에 대한 새 인증서, 이제 openconnect가 작동하지 않습니다.

분류에서Dev

두 값은 예상대로 행동에 대해 증가하지 않습니다.

분류에서Dev

ng-click이 angular js의 http.get 호출에서 가져온 동적으로 삽입 된 html에 대해 작동하지 않습니다.

분류에서Dev

IMAGE IN HTML에 대해 너비 및 높이가 작동하지 않습니다.

분류에서Dev

ddCollapse가 둘 이상의 요소에 대해 작동하지 않습니다.

분류에서Dev

ddCollapse가 둘 이상의 요소에 대해 작동하지 않습니다.

분류에서Dev

사용자 검색에 대한 인증이 작동하지 않습니다.

Related 관련 기사

  1. 1

    사용자가 대체 테이블에 저장되면 인증이 작동하지 않습니다.

  2. 2

    DonutOutputCache가 이미지에 대해 작동하지 않습니다.

  3. 3

    파일에 "azuremediaplayer.min.js"가 포함되어 있지 않으면 Azure 미디어 플레이어가 작동하지 않습니다.

  4. 4

    새 이미지가 beer-reveal에로드되면 Beerslider.js가 제대로 작동하지 않습니다.

  5. 5

    tapGesture가 레이블에 대해 작동하지 않습니다.

  6. 6

    srihash.org가 cesiumjs.org의 .js 파일에 대해 작동하지 않습니다.

  7. 7

    Outlook BUG- "이 메시지 다시 보내기"가 .EML 파일에 대해 작동하지 않습니다.

  8. 8

    미디어 플레이어가 실행 중일 때 애니메이션을 시작하려면 어떻게해야합니까? 미디어 플레이어가 실행되지 않으면 애니메이션도 실행되지 않습니다.

  9. 9

    vimrc : "filetype detect"가 처음 실행되지 않으면 & ft 확인이 작동하지 않습니다.

  10. 10

    jquery .load ()에 의해로드 된 페이지에서 Node.js가 제대로 작동하지 않습니다.

  11. 11

    SelectedIndexChanged가 ComboBox에 대해 실행되지 않습니다.

  12. 12

    js 파일에 연결이 작동하지 않습니다.

  13. 13

    .gitignore가 폴더 내의 파일에 대해 작동하지 않습니다.

  14. 14

    버튼 클릭이 대기열에 추가되고 스크롤하지 않으면 실행되지 않습니다.

  15. 15

    문자열에 Perl에`\ n`이 포함되어 있으면 대체가 작동하지 않습니다.

  16. 16

    Resharper 코드 서식이 html 파일에 대해 작동하지 않습니다.

  17. 17

    angular.js로 인해 다른 jQuery 플러그인이 실행되지 않고 콘솔에 오류가 발생하지 않을 수 있습니까?

  18. 18

    ID 버튼이있는 페이지 외부에 배치하면 JS가 실행되지 않습니다.

  19. 19

    파이썬 목록 이해가 예상대로 작동하지 않습니다.

  20. 20

    "X 일 이상 실행되면 작업 중지"가 작동하지 않음

  21. 21

    파이썬 튜플 비교가 다음보다 작은 배수에 대해 작동하지 않습니다.

  22. 22

    특정 명령에 대한 파일 인수에 대해 탭 완성이 작동하지 않습니다.

  23. 23

    회사 VPN에 대한 새 인증서, 이제 openconnect가 작동하지 않습니다.

  24. 24

    두 값은 예상대로 행동에 대해 증가하지 않습니다.

  25. 25

    ng-click이 angular js의 http.get 호출에서 가져온 동적으로 삽입 된 html에 대해 작동하지 않습니다.

  26. 26

    IMAGE IN HTML에 대해 너비 및 높이가 작동하지 않습니다.

  27. 27

    ddCollapse가 둘 이상의 요소에 대해 작동하지 않습니다.

  28. 28

    ddCollapse가 둘 이상의 요소에 대해 작동하지 않습니다.

  29. 29

    사용자 검색에 대한 인증이 작동하지 않습니다.

뜨겁다태그

보관