반응형
발신기지 '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
반응형
'sourcecode' 카테고리의 다른 글
| JSON 개체에서 값을 삭제하려고 하면 "유니코드 개체는 항목 삭제를 지원하지 않습니다"라는 오류가 나타나는 이유는 무엇입니까? (0) | 2023.03.09 |
|---|---|
| 유성 전개 앱에서 데이터를 쉽게 내보낼 수 있는 방법이 있나요? (0) | 2023.03.09 |
| ASP.net MVC에서 JSONP 반환 (0) | 2023.03.09 |
| urlib2 및 json (0) | 2023.03.09 |
| react render()가 componentDidMount()보다 먼저 호출되고 있습니다. (0) | 2023.03.04 |