반응형
반응형

자바 스크립트는 서로 다른 도메인에 대한 요청을 보안상 제한합니다. 이 정책을 동일근원정책(Same-Origin Policy, SOP) 정책이라고 하며, 이러한 정책으로 인해 생기는 이슈를 cross-domain 문제라고 합니다. 
개발을 하다보면 어쩔 수 없이 다른 도메인으로부터 데이터를 가져와야 하는 경우가 많기에 많은 사람들이 cross-domain 이슈를 겪고 있습니다.

이런 경우 사용할 수 있는 것이 JSONP(JSON with Padding)입니다. 처음 JSONP를 접했을 때 잘 정리가 되지 않았던, 사용할 때 명확히 알아야 할 것들을 정리해보았습니다.

 

1. JSONP 요청은 일반 AJAX 요청과 다르다

//-- JSON
$.ajax({ 
    url: url, 
    dataType: 'json', 
    data: data, 
    success: callback 
}); 
$.getJSON(url, data, callback);

//-- JSONP
$.ajax({ 
    url: url, 
    dataType: 'jsonp', 
    jsonpCallback: "myCallback", 
    success: callback 
}); 
$.getJSON(url + "?callback=?", data, callback);

dataType 만 변경하거나, 요청 url 뒤에 callback 파라미터 를 붙일 뿐입니다. 그렇지만 이것만으로도 완전히 다른 동작 을 하게 됩니다.

 

2. ‘JSONP’라는 데이터 타입 요청이 아닌 <script> 호출 방식

JSONP는 HTML의 script 요소로부터 요청되는 호출에는 보안상 정책이 적용되지 않는다는 점을 이용한 우회 방법 입니다.

다시 한번 확실히 하자면, script 요소는 src를 호출한 결과를 javascript를 불러와서 포함시키는 것이 아니고 실행시키는 태그입니다.

 


3. JSONP Callback은 서버에서 지원해줘야 한다
알아두어야 할 중요한 것은 응답 데이터는 Text형 이란 것과, callback 함수명으로 감싸진다 는 점 입니다.
 

"myCallback({'name':'test','age':28})"
 
 
 
 
 $.ajax({ url: url, dataType: 'jsonp', jsonpCallback: "myCallback", success: callback });
 
 $.getJSON(url + "?callback=?", data, callback);

위 요청을 해석해보자면,

  • cross-domain 이슈를 회피하기 위하여 jsonp 요청을 한다
  • 응답 데이터는 myCallback(결과) 형태의 text로 wrapping 되어질 것이다.
  • myCallback이란 함수를 나의 success function에 mapping 시킬 것이다.

가 됩니다.

 

github.com/kingbbode/spring-jsonp-server
 

 

kingbbode/spring-jsonp-server

Jsonp Server Example. Contribute to kingbbode/spring-jsonp-server development by creating an account on GitHub.

github.com

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Kingbbode</title>
    <script
    src="https://code.jquery.com/jquery-2.2.4.min.js"
    integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
    crossorigin="anonymous"></script>
  </head>
  <body>
    <script>
    var url = 'http://localhost:9000/';
    var static_json = 'http://localhost:9000/json/test.json'
    $.ajax({
      url: static_json,
      dataType: 'jsonp',
      jsonpCallback: "myCallback",
      success: function(data){
        console.log('ajax', data);
      }
    });

    $.getJSON(url + "?callback=?", function(data){
      console.log('getJSON', data);
    });
    </script>
  </body>
</html>
반응형
반응형

우리 자신이 잘못된 길을 가고 있음을 깨달을 때
그만두는 능력이야말로 우리의 삶을 바꾸는데 필요한 힘이다.
이것이 중요하다. 그만두는 것은 힘이다.
성공하는 사람들은 더 이상의 손실을 막음으로써 자신을 계속 앞으로
나아갈 수 있게 해주는 일에 자신의 시간과 에너지를 다시 할당할 수 있다.
- 리치 칼가아드, ‘레이트 블루머’에서


무언가를 중도에 그만두는 것은 결코 쉽지 않습니다.
그만둘 때 우리는 죄책감, 굴욕감 같은 감정을 느끼게 됩니다.
그러나 적절한 이유가 있어 그만둘 경우, 그것은 포기가 아닙니다.
진정으로 성공한 사람들은 ‘똑똑한 중도 포기자들’로, 이들은 현재의 길이
자신의 최종 목표에 다가가는데 더 이상 도움이 안된다는 것을 깨달았을 때
과감하게 방향을 수정할 수 있는 사람들입니다.

반응형
반응형

 

나는 당뇨병 전문의로
지난 38년 동안 20만 명이 넘는 환자를
진료해왔다. 당뇨병 환자들을 돌보며 하루하루를
보내던 나는 얼핏 보기에 똑같이 일하는 직장인들
사이에서 '건강 격차'가 크게 벌어지고 있다는 사실을
발견했다. 예를 들어 40세 전후의 직장인 100명이 있다면
그중 20퍼센트가 '건강 상류층'이고 나머지 80퍼센트는
안타깝게도 '건강 하류층'이다. 그 격차를 40세 때는
좀처럼 자각하지 못할 수 있다. 직장인 사이에 건강
격차를 초래하는 것은 어김없이 '매일 먹는 식사'다.
먹는 것은 일반적으로 생각하는 것보다 훨씬
더 크게 건강을 좌우할 뿐 아니라
업무 성과에도 영향을 미친다.


- 마키타 젠지의《식사가 잘못됐습니다》중에서 -


* '건강 격차'라는 용어는 처음 듣습니다.
비싼 음식을 먹는 사람과 값싼 음식을 먹는
사람의 이야기가 아닙니다. 하루 세끼 매일 먹는
음식이 건강식이냐 아니냐를 말하는 것입니다.
고혈압, 당뇨병 같은 질병을 '생활 습관병'이라
부르는데, 여기서 말하는 '생활 습관'이란
다름 아닌 '음식 습관'을 일컫습니다.
그에 따른 건강 격차가 40대에
드러나기 시작합니다.

반응형

'아침편지' 카테고리의 다른 글

잠시 고개를 돌려보면  (0) 2021.03.29
극도의 고통은 타인과 나눌 수 없다?  (0) 2021.03.26
더 나은 사회를 만드는 일  (0) 2021.03.24
엄마를 닮아가는 딸  (0) 2021.03.23
인재 발탁  (0) 2021.03.22
반응형

적용 대상: 

SQL Server 2016(13.x) 이상

FOR JSON 절의 JSON 출력에 null 값을 포함하려면 INCLUDE_NULL_VALUES 옵션을 지정합니다.

INCLUDE_NULL_VALUES 옵션을 지정하지 않은 경우 JSON 출력은 쿼리 결과에서 null인 값에 대한 속성을 포함하지 않습니다.

예제

다음 예제에는 INCLUDE_NULL_VALUES 옵션을 사용한 경우와 사용하지 않은 경우 FOR JSON 절의 출력이 나와 있습니다.

예제INCLUDE_NULL_VALUES 옵션을 사용하지 않는 경우INCLUDE_NULL_VALUES 옵션을 사용하는 경우

{ "name": "John", "surname": "Doe" } { "name": "John", "surname": "Doe", "age": null, "phone": null }

아래에는 INCLUDE_NULL_VALUES 옵션을 사용한 FOR JSON 절의 다른 예제가 나와 있습니다.

SELECT name, surname  
FROM emp  
FOR JSON AUTO, INCLUDE_NULL_VALUES    
[{
    "name": "John",
    "surname": null
}, {
    "name": "Jane",
    "surname": "Doe"
}] 

 

 

 

docs.microsoft.com/ko-kr/sql/relational-databases/json/include-null-values-in-json-include-null-values-option?view=sql-server-ver15

반응형
반응형

MBTI - 사교적인 외교관 ESFJ-A

 

www.16personalities.com/ko/%EC%84%B1%EA%B2%A9%EC%9C%A0%ED%98%95-esfj

 

성격유형 : “사교적인 외교관” (ESFJ) | 16Personalities

 

www.16personalities.com

반응형
반응형

기업이 미래로 가는 경주에서 승리하려면,
무엇보다도 기업 안에 경험이나 연공에 의한 계층구조가 아닌
상상력의 계층구조를 만들어야 한다.
이것은 지금까지 전략 만들기 과정에서
소외되었던 사람들에게 자신들의 목소리를 낼 수 있도록
일정 수준 이상의 몫을 주는 것이다.
- 게리 하멜, 런던비지니스 스쿨 교수


모든 조직은 나름대로의 목적과 이유에 의해 만들어졌습니다.
이제 연공(근속연수)과 지위에 의한 계층구조가 아닌,
신속하고 유연한 대응능력, 고객 만족도 제고, 상상력과 창의력 향상과 같은
새로운 기준에 의한 조직 설계를 시도해 볼 때입니다.
젊은 신참자들, 본사가 아닌 현장 사람들처럼
기존 사고에 얽매이지 않는 창의력을 가진 사람들의
새롭고 다양한 목소리를 얻어낼 수 있는 노력도 필요합니다.

반응형

+ Recent posts