Skip to content

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
C
branch: fcgi

This branch is 11 commits behind master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
patches
LIGHTTPD.CONF.EXAMPLE
Makefile
QUICKSTART
README
TODO
error.c
fetch.c
jsonptunnel.h
main.c
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:

      1. extURL - the URL to POST to.

    OPTIONAL:

      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.

    EXAMPLE:
      
      http://yoursite.com/cgi-bin/jsonptunnel.cgi?extURL=http://
      somewhereelse.com/data/post&someThing=yo&
      somethingElse=rofl

    EXPLANATION:

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

    LIVE EXAMPLE:

      http://ubergibson.com/~alan/calc/

      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.CONF.EXAMPLE"
     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.'
  1. make get-cgic
  2. make
  3. copy the created jsonptunnel.cgi to your cgi-bin (or equivalent).

DEPENDENCIES:

  1. libcurl
  2. libcgic - download automatically with 'make get-cgic' command.

  jsonptunnel requires libcurl and libcgic.  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.
Something went wrong with that request. Please try again.