Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

C (F)CGI for tunneling POST over GET for cross-site JSONP POST requests

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 patches
Octocat-spinner-32 LIGHTTPD.EXAMPLE.CONF
Octocat-spinner-32 Makefile
Octocat-spinner-32 QUICKSTART
Octocat-spinner-32 README
Octocat-spinner-32 TODO
Octocat-spinner-32 error.c
Octocat-spinner-32 fetch.c
Octocat-spinner-32 jsonptunnel.h
Octocat-spinner-32 main.c
Octocat-spinner-32 request.c
README
ABOUT:

  This is a C fastcgi/cgi that "mirrors" web services available via HTTP POST.

  The reason you might want to do this is to access off-site
  JSON data sources from scripts via JSONP.

  Because the trick behind JSONP is dynamically adding "<script>" nodes
  to the DOM with the DOM API, it's intrinsically limited to external
  scripts available with an HTTP "GET."

  This CGI lets you send HTTP POST data to off-site URLs, and
  retrieve the result, with an HTTP GET - it 'tunnels' GET 
  to POST.

OVERVIEW:

  jsonptunnel.cgi itself looks for two GET variables, one of which 
  is required:

    REQUIRED PARAMETERS:

      1. extURL - the URL to POST to.

    OPTIONAL PARAMETERS:

      1. extCallback - wraps the off-site output with a function
                       named this parameter, taking the returned
                       data as its only parameter.  Many JSONP
                       web services provide their own 'callback'
                       parameter; if they don't, you can use this.

    EXPLANATION:

      jsonptunnel sends any variables you specify in the query
      string other than the ext* variables to the target URL.

    LIVE EXAMPLE:

      http://labs.thinkminimo.com/jsonptunnel/

      This is a page using Mootools with the JsonP extension from clientcide.
      It's an example of how to tunnel a POST request across domains to a
      simple web service that adds two numbers, and display the result.

COMPILING:

  CGI:

  1. make get-cgic
  2. make cgi
  3. copy jsonptunnel.cgi to your cgi-bin (or equivalent).

  FastCGI:

  1. make get-cgic
  2. make fcgi
  3. Configure your web server to run jsonptunnel.fcgi. See "LIGHTTPD.EXAMPLE.CONF"
     for an example configuration.

  You may have to modify the Makefile variable FCGI_INCLUDE to point 
  to the location of the FastCGI header files on your system.

  CAVEATS:

  To switch between fcgi and cgi builds, 'make clean'
  before running 'make cgi' or 'make fcgi.'

DEPENDENCIES:

  1. libcurl - http://curl.haxx.se/
  2. libcgic - http://www.boutell.com/cgic/ 
               download and patch automatically with 'make get-cgic' command.
  3. FastCGI - http://www.fastcgi.com/

  jsonptunnel requires libcurl, libcgic, and fastcgi.  libcurl is pretty common,
  libcgic is not.  The 'make get-cgic' command downloads cgic into the
  current directory and a subsequent make command will build the library
  and link against it.

THANKS:

  I'd like to thank the CURL team, Boutell.com, and the FastCGI guys
  for making such awesome software.
Something went wrong with that request. Please try again.