본문 바로가기

Javascript

[js] JSONP & POST

http://alotaiba.github.io/FlyJSONP/

JSONP 특성상 POST 요청은 수행할 수 없다. 하지만 몇 가지 트릭을 사용하면 JSONP의 장점을 살리면서도, POST요청을 보낼 수 있는데, FlyJsonP는 그러한 트릭을 구현한 구현체중의 하나이다.

FlyJsonP 내부적으로는 YQL을 사용한다. (https://developer.yahoo.com/yql/)
즉, GET요청으로 야후 서버한테 정보를 넘겨주면, 야후 서버가 대신 POST를 날려서 결과를 알려주는 구조이다. 클라이언트가 직접 요청을 날리는것이 아니기 때문에 몇가지 케이스에서는 문제가 될 수도 있는 소지가 있지만, 대부분의 경우 괜찮다고 생각한다.


다만 한가지 주의할 사항이 있다. YQL에서는 몇몇 특수문자를 허용하지 않는다. 쿼리 기호랑 겹치기 때문인데, 반드시 이스케이프 하고 사용해야 한다. (https://developer.yahoo.com/boss/search/boss_api_guide/reserve_chars_esc_val.html)

예를 들어 BASE64 인코딩한 결과물 중 + 기호가 들어있는 데이터를 이스케이프 하지 않고 parameters에 넣어서 보내면 문제가 발생할 것이다.