2013-12-12 5 views
1

내 주요 목표는 클라이언트 (브라우저)가 ajax와 asp.net 웹 API 백엔드를 사용하여 인증 프로세스 중에 발생하는 것을 정확히 이해하는 것입니다.jquery ajax 무단 요청은 "NetworkError"및 상태 0을 반환합니다.

처음에는 브라우저에서 아약스를 통해 내 컨트롤러 중 하나 ("Access-Control-Allow-Origin"허용)에 간단한 GET 요청을합니다. 나는 내가 원했던 반응을 취한다. 그리고 모든 것은 지금까지 OK이다.

그런 다음 웹 API에서 동일한 컨트롤러에 authorize 특성을 설정하고 결과를 연구하기 위해 간단한 GET 요청을 다시 작성합니다. 따라서 방화 광의 도움으로 "NetworkError : 401 Unauthorized - localhost/api/values"가 있음을 알 수 있습니다.

결과 개체에는 readyState : 0, responseText : "", status : 0, statusText : "error"값이 표시됩니다. 이게 정상인가? 예제 상태 (401)를 볼 수 없습니다 : 401? 나는이 스레드의 허용 된 솔루션을 사용할 수 있다고 생각한다 : 그러나 잠재적 인 401 결과를보다 엄격하게 검사하는 것을 선호한다.

내가 작성한 한 가지 생각은 기본적으로 asp.net 웹 API인데, authorize 속성을 사용하면 승인되지 않은 응답에 "Access-Control-Allow-Origin"헤더가 포함되지 않으므로 추가했습니다. 전역 적으로 각 응답에 "Access-Control-Allow-Origin"을 추가하는 사용자 지정 작업 필터가 있지만 내 문제가 해결되지 않았으므로 그렇지 않습니다.

답변

2

해결책을 찾았습니다.이 문제의 원인에 대한 나의 가정은 결국 정확함이 입증되었습니다. 승인되지 않은 요청이 권한 부여를 필요로하는 컨트롤러 (authorize 특성 사용)에 도착하면 응답에 헤더 "Access-Control-Allow-Origin"이 포함되지 않았습니다. 결과적으로 클라이언트의 jqXHR 상태는 401 대신 0이었습니다.

그래서 "asp.net web-API Web.config"에 "Access-Control-Allow-Origin"을 추가하고 마지막으로 제대로 작동했습니다.

관련 문제