2011-08-18 1 views
0

최대한 순수한 REST 접근법을 유지하려고 시도한 결과, 이 마지막 비트까지 API가 될 것이라고 결정했습니다.XHR에 의해 트리거 된 401 오류를 무시할 수있는 브라우저 간 방법이 있습니까?

불행히도, 나는 하나의 걸림돌에 도달했습니다. PHP로 다이제스트 인증 처리기를 작성한 후에는 양식 기반 인증 방법으로 웹 브라우저 사용자에게 익숙하지 않은 것으로 나타났습니다.

이유는 자바 스크립트를 통해 다이제스트 인증 응답을 시뮬레이트 할 수 있지만 HTML 양식의 사용자 이름과 비밀번호를 사용하기 때문에 (생성 된 방식으로 인해 스크립트에 안전하게 nonce 값을 줄 수 있습니다) , 실패시, 브라우저는 여전히 표준의 추악한 인증 프롬프트를 보여줍니다.

이 문제가 발생합니까? 이전 질문은 mozBackgroundRequest을 참조하지만 거의 브라우저를 교차하지 않는 것처럼 보입니다.

감사합니다.

답변

0

AJAX로 먼저 요청하여 인증 세부 정보가 제대로 작동하는지 확인할 수 있습니다.

그렇다면 수행 한 작업을 수행하십시오. 그들은 당신이 PHP의 인증 루틴을 제어 할 경우, 자신에 대한 사용자, 더 좋은 방법 ...

편집

에게 (그리고 인증이 실패 할 경우, 아마도 등을 header('HTTP/1.1 401 Unauthorized'); 일을)하지 않는 경우 너는 단지 그것을 할 수 없다. 대신 보통 200 OK로 응답하지만 ajax.responseText (예 : 'authFailed'또는 무언가)에서 찾을 수있는 본문에 문자열을 넣으십시오.

정상적인 브라우저 요청에없는 AJAX 요청에 AJAX 인증 확인과 정상적인 인증 된 세션을 구분할 수 있도록 헤더 (또는 쿠키 등)를 추가하기 만하면됩니다.

정확한 메커니즘은 지금 당장 머리 속에는 약간 퍼지지만 (긴 하루였습니다) 그 방법을 사용하여 수행 할 수 있다고 확신합니다.

+0

글쎄, 그게 내가 현재하고있는 것입니다. 문제는 데이터를 확인하는 다른 방법을 쓰지 않는다면 프롬프트 대화 상자가 관계없이 표시되는 것입니다. 지저분한 것일지도 모르지만 선택 사항 일 수 있습니다. –

+0

아니,'responseCode'에서 401을 확인했다는 의미였습니다 - 프롬프트를 표시하지 않고 조용히 실패 할 것이라고 생각했지만 방금 시도했지만 시도하지 않았습니다. 사실, 방금 다른 게시물을 읽으려는 생각이 들었습니다. 1-2 분 안에 제 편집을 보았습니다. – DaveRandom

+0

그냥 테스트했는데, 브라우저 공급 업체가 더 좋은 방법을 사용할 수있을 때까지는 가장 깔끔한 솔루션 인 것 같습니다. 다른 문제가 생겼습니다. 제가 작성한 인증 요청은 "기억"되지 않을 것입니다.하지만 그것은 다른 질문을위한 것이며, 해결되지 않은 채로 남을 가능성이있는 것입니다 ... –

관련 문제