[javascript] 교차 도메인 게시물과 함께 자격 증명을 보내 시나요?

자격 증명 이있는 요청 에 따르면 Firefox는 다음과 같은 경우에만 교차 도메인 게시물과 함께 자격 증명을 보냅니다.

invocation.withCredentials = "true";

설정되었습니다… 그러나 jQuery의 Ajax API가 이에 대한 메커니즘을 제공하는 것 같지 않습니다.

내가 놓친 것이 있습니까? 내가 할 수있는 다른 방법이 있습니까?



답변

jQuery 1.5에서는 기능이 손상 될 것으로 예상됩니다.

jQuery 1.5.1부터 xhrFields param을 사용해야합니다.

$.ajaxSetup({
    type: "POST",
    data: {},
    dataType: 'json',
    xhrFields: {
       withCredentials: true
    },
    crossDomain: true
});

문서 : http://api.jquery.com/jQuery.ajax/

보고 된 버그 : http://bugs.jquery.com/ticket/8146


답변

beforeSend콜백을 사용하여 추가 매개 변수를 설정할 수 있습니다 ( XMLHTTPRequest객체가 유일한 매개 변수로 전달됨).

아시다시피 이러한 유형의 교차 도메인 요청은 일반적인 사이트 시나리오에서는 작동하지 않으며 다른 브라우저에서는 작동하지 않습니다. 나는 FF 3.5가 어떤 보안 제한을 부과하는지조차 알지 못하기 때문에 아무것도 위해 벽에 머리를 부딪히지 마십시오.

$.ajax({
    url: 'http://bar.other',
    data: { whatever:'cool' },
    type: 'GET',
    beforeSend: function(xhr){
       xhr.withCredentials = true;
    }
});

한 가지 더주의해야 할 점은 jQuery가 브라우저 차이를 정규화하도록 설정되어 있다는 것입니다. 이러한 유형의 기능을 금지하는 jQuery 라이브러리에 의해 추가 제한이 부과된다는 것을 알 수 있습니다.


답변

jQuery 3 및 이전 버전에서는 다음과 같은 간단한 구성도 개별 요청에 대해 작동합니다.

$.ajax(
        'https://foo.bar.com,
        {
            dataType: 'json',
            xhrFields: {
                withCredentials: true
            },
            success: successFunc
        }
    );

Firefox Dev Tools-> Network 탭 (개별 요청의 보안 탭)에서받은 전체 오류는 다음과 같습니다.

foo.bar.com에 연결하는 동안 오류가 발생했습니다 .SSL 피어가 허용 가능한 보안 매개 변수 집합을 협상 할 수 없습니다. 오류 코드 : SSL_ERROR_HANDSHAKE_FAILURE_ALERT


답변