Чтобы обойти ajax «та же политика происхождения», код для пересылки запросов ajax PHP? - PullRequest
2 голосов
/ 07 февраля 2011

Я хочу обойти политику того же происхождения ajax, имея на своем сайте страницу php, которая в основном действует как прокси-сервер JSON.Например, я делаю ajax-запрос следующим образом:

mysite.com/myproxy.php?url=blah.com/api.json&a=1&b=2

Затем он делает запрос:

blah.com/api.json?a=1&b=2

И возвращает результат JSON (или любой другой) исходному запрашивающему.Теперь я предполагаю, что я бы глупо заново изобрел колесо, если бы написал этот php-код (плюс я не знаю php!) - есть ли какой-то уже существующий код для этого?Я уверен, что я не единственный, кто противился моей политике прежнего происхождения.

О да, JSONP не подходит для этого конкретного API.

Спасибовсе

1 Ответ

5 голосов
/ 07 февраля 2011

Хорошо, вот что - вставьте это в скрипт php, назовите его следующим образом: script.php? Url = blah

отправьте содержимое, которое вы хотите опубликовать на сервере.* Теперь этот скрипт слишком открыт для моего вкуса, поэтому для повышения безопасности я бы порекомендовал вам добавить список доменов в белый список.

Итак, добавьте это к началу:

$whitelist = array('http://www.google.com','http://www.ajax.com');
$list = array();
foreach($whitelist as $w)
 $list[] = parse_url($w,PHP_URL_HOST);

$url = $_GET['url'];
$url = pathinfo($url,PHP_URL_HOST);
if(!in_array($url, $list)) die('no access to that domain');
...