sourcecode

발신기지 'Authorization' 헤더와 jquery.ajax()의 교차 발신

codebag 2023. 3. 9. 22:02
반응형

발신기지 'Authorization' 헤더와 jquery.ajax()의 교차 발신

교차 발신 도메인을 보내고 사용자 지정 '인증' 헤더를 추가하려고 합니다.아래의 코드를 참조해 주세요.

오류:

XMLHttpRequest가 {url}을(를) 로드할 수 없습니다.요청 헤더 필드 허가가 Access-Control-Allow-Headers에서 허용되지 않습니다.

function loadJson(from, to) {
    $.ajax({
        //this is a 'cross-origin' domain
        url : "http://localhost:2180/api/index.php",
        dataType : 'json',
        data : { handler : "statistic", from : from, to : to
        },
        beforeSend : setHeader,
        success : function(data) {
            alert("success");
        },
        error : function(jqXHR, textStatus, errorThrown) {
            alert("error");
        }
    });
}

function getToken() {
    var cookie = Cookie.getCookie(cookieName);
    var auth = jQuery.parseJSON(cookie);
    var token = "Token " + auth.id + ":" + auth.key;
}

function setHeader(xhr) {
    xhr.setRequestHeader('Authorization', getToken());
}

저도 시도했습니다.

headers : { 'Authorization' : getToken() },

Ajax 요구로 설정합니다.

jquery-ajax 프레임워크가 크로스 오리진 인증을 차단하고 있을 가능성이 있습니까?어떻게 하면 고칠 수 있을까요?

업데이트:

덧붙여서, 인증을 보존하는 보다 안전한 방법이 있을까요?클라이언트 측에서 키를 누른 후 쿠키에서 키를 누릅니다.getToken()은 본문, 날짜 등을 해시하는 보다 복잡한 메서드로 대체됩니다.

다음 예시는 CORS 요청의 예입니다.서버에 액세스 할 수 있는 경우(이것은 localhost에 대한 요구이므로 액세스 할 수 있다고 생각됩니다), CORS 고유의 응답 헤더를 추가할 필요가 있습니다.가장 간단한 방법은 다음 응답 헤더를 추가하는 것입니다.

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Authorization

또한 HTTP OPTIONS 요청에 응답하도록 서버를 구성해야 합니다.CORS 요청의 상세한 것에 대하여는, http://www.html5rocks.com/en/tutorials/cors/ 를 참조해 주세요.

언급URL : https://stackoverflow.com/questions/9559947/cross-origin-authorization-header-with-jquery-ajax

반응형