-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathproxy.php
54 lines (48 loc) · 1.78 KB
/
proxy.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
// FILE: proxy.php
//
// LAST MODIFIED: 2006-03-23
//
// AUTHOR: Troy Wolf <[email protected]>
//
// DESCRIPTION: Allow scripts to request content they otherwise may not be
// able to. For example, AJAX (XmlHttpRequest) requests from a
// client script are only allowed to make requests to the same
// host that the script is served from. This is to prevent
// "cross-domain" scripting. With proxy.php, the javascript
// client can pass the requested URL in and get back the
// response from the external server.
//
// USAGE: "proxy_url" required parameter. For example:
// http://www.mydomain.com/proxy.php?proxy_url=http://www.yahoo.com
//
// proxy.php requires Troy's class_http. http://www.troywolf.com/articles
// Alter the path according to your environment.
error_reporting(~E_ALL);
require_once("libs/class_http.php");
$proxy_url = isset($_GET['proxy_url'])?$_GET['proxy_url']:false;
if (!$proxy_url) {
header("HTTP/1.0 400 Bad Request");
echo "proxy.php failed because proxy_url parameter is missing";
exit();
}
// Instantiate the http object used to make the web requests.
// More info about this object at www.troywolf.com/articles
if (!$h = new http()) {
header("HTTP/1.0 501 Script Error");
echo "proxy.php failed trying to initialize the http object";
exit();
}
$h->url = $proxy_url;
$h->postvars = $_POST;
if (!$h->fetch($h->url)) {
header("HTTP/1.0 501 Script Error");
echo "proxy.php had an error attempting to query the url";
exit();
}
// Forward the headers to the client.
$ary_headers = split("\n", $h->header);
foreach($ary_headers as $hdr) { header($hdr); }
// Send the response body to the client.
echo $h->body;
?>