복붙노트

[JQUERY] xmlHttp.getResponseHeader + CORS이 작동하지 않음

JQUERY

xmlHttp.getResponseHeader + CORS이 작동하지 않음

해결법


  1. 1.첫째, 약간의 배경 :

    첫째, 약간의 배경 :

    당신은 헤더를 클라이언트를 요청 지정이 보낼 수있는 액세스 제어 - 허용 - 헤더를 사용하는,하지만 당신은 클라이언트가 읽도록 허용되는 응답 헤더 지정되지 않습니다. 클라이언트가 단순하지 않은 응답 헤더를 읽을 수 있도록하기 위해, 당신은 액세스 제어 - 노출 - 헤더를 사용해야합니다. HTML5의에서 CORS 페이지 록스 :

    그래서, 새로운 정보, 당신이 할 수 주어진 :

    HttpContext.Current.Response.AddHeader("Access-Control-Expose-Headers", "Set-Cookie");
    

    ...하지만 그것보다 더있다.

    이제, 실제 답 :

    explictily 설정 - 쿠키를 읽고 허용하지 XHR 사양 : 여기에 하나 더 심각한 문제가 있습니다. 이 기능 크로스 도메인 쿠키 훔치는 공격이기 때문이다.

    그것은 도메인 B 만 도메인 특정 쿠키 도메인 B 세트 쿠키 설정 때 가정하자 도메인 A는 도메인 B에 대한 상호 도메인 요청합니다. 도메인 B의 쿠키를 읽을 수있는 도메인 A를 시도 쿠키 액세스를 위해 동일 출처 정책을 위반하는 것입니다.

    실제로 당신이 원하는 것을 할 수있는 가장 좋은 방법의 확실하지 않다, 그래서 나는 WCF를 모르겠지만, 솔루션 예를 들면, X-WCF-인증 (쿠키를하지 토큰 인증을 통과 할 수 있습니다 추측에는 요 헤더?) 해당 도메인 A가 읽은 다음 자신의 쿠키를 설정합니다.


  2. 2.사용자가 설정하지 않았기 때문에 브라우저의 보안 정책은 응답을 차단할 수 있습니다 :

    사용자가 설정하지 않았기 때문에 브라우저의 보안 정책은 응답을 차단할 수 있습니다 :

    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Credentials","true");
    

    즉 없습니다 도움 않는 경우, 추가 시도

    xhrFields: { withCredentials: true }
    

    귀하의 아약스에 대한 옵션도 가치가 촬영 될 수 있습니다.

  3. from https://stackoverflow.com/questions/14686769/xmlhttp-getresponseheader-not-working-for-cors by cc-by-sa and MIT license