Cross-Domain AJAX calls using PHP
AJAX has become the core component of many web applications around us. And its fairly easy to handle AJAX now a days, with the help of various javascript libraries (ex: jQuery, Prototype, Mootools, YUI, etc). But there is one security issue that web browsers impose in doing AJAX calls - they don’t let you do AJAX calls in web servers different than yours. That means, if your script is in www.mydomain.com and you’re trying to do AJAX call to www.anotherdomain.com/get.php, then the browser will through error like: “Error: uncaught exception: Permission denied to call method XMLHttpRequest.open”.
Now, there are a number of solutions to this problem. Instead of explaining them all to you, lemme provide you the simplest one: using a PHP transport file. If you already know the thing and just need the script, download from here.
Others, let’s see an example implementation first.
Example use
1: xmlHttp.onreadystatechange=function()
2: {
3: if(xmlHttp.readyState==4)
4: {
5: alert(xmlHttp.responseText);
6: }
7: }
8:
9: xmlHttp.open("GET", 'http://myserver.com/transport.php?action=' +
10: urlencode('different-server.com/return_call.php') +
11: '&method=get&data1=101&data2=pass', true );
12:
13: xmlHttp.send(null);
Now, lets see how it works:
- The script makes an AJAX call to the myserver.com/transport.php with a few parameters:
- action = the target URL you need to fetch, from a different domain
- method = the HTTP method (post/get)
- data1, data2 = sample parameters for using as either query-string or POST fields
- When the request is received by transport.php, it uses cURL to make a call to the page mentioned in action.
- Based on the method, it either makes a GET request or a POST request. In both cases, it sends the extra parameters that are sent.
- After the response is received, transport.php echoes it. So, you have what you need!
Download
![]() |
transport.php Cross-Domain AJAX call transporter. Downloaded: 1464 times |
Comments and suggestions are most welcomed




(3 votes, average: 3.67 out of 5)


















Add New Comment
Viewing 12 Comments
Thanks. Your comment is awaiting approval by a moderator.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Add New Comment
Trackbacks