-
크로스 도메인 No 'Access-Control-Allow-Origin' 해결해보자크로스 브라우징 2016. 6. 11. 15:33반응형
이번 글은 크로스 도메인에 관련된 글이다.
웹 개발 하는 도중 크로스 도메인 문제를 안 겪은 사람은 없을 것이다.
해결방법은 여러가지 있겠지만, 이 글에선 jsonp를 통해 해결해보겠다.
client는 당연히 javascript를 이용할 것이고, server는 nodejs를 이용하겠다.
client 도메인 - 'http://182.161.117.18'
server 도메인 - 'http://182.161.117.18:8888'
$.ajax({
url: 'http://182.161.117.18:8888/',type: 'get',
dataType: 'json',
contentType: "application/json",
success: function (data) {
},
error:function(request,status,error){
}
});기본적인 ajax 코드 틀이라고 보면 된다.
아무런 설정이 없었다면 크로스 도메인 오류가 뜬다.
해결법은 두 가지 방법을 다뤄본다.
1. $.ajax
2. $.getJSON
먼저 $.ajax 를 보자.
Client
$.ajax({
url: url,
type: 'get',
dataType: 'jsonp',
contentType: "application/json",
success: function (data) {
},
error:function(request,status,error){
}
});
}Server
app.get('/', function(req,res){
var data;
// data 변수에 넘겨줄 데이터 처리
res.send(req.query.callback + '('+ data + ');');
});Client쪽에선 dataType을 jsonp로 설정하면 되고,
Server쪽에선 url에 있는 callback을 통해 데이터를 실어서 반환해주면 된다.
jsonp를 이용함으로써 가능한 흐름이다.
이번에는 $.getJSON 보자.
$.getJSON('http://182.161.117.18:8888?callback=?' , function(data){
});url 뒤에 '?callback=?' 만 넣어주면 된다.
이건 첫번째 방법처럼 jsonp를 명시해주지 않았지만 똑같이 jsonp를 이용한다.
그 이유는 jquery에 있다.
jquery 자체에서 ? 기호를 인식하여 jsonp 형태로 바꾸기 때문이다.
반응형'크로스 브라우징' 카테고리의 다른 글
HTTP 접근 제어 (CORS) :: 마이구미 (0) 2017.09.15 ie에서 indexOf() 해결 방안을 알아보자. (0) 2016.06.19 ie에서 JSON.stringify 지원하지 않는 문제를 해결해보자 (0) 2016.06.11