Как то для одного проекта потребовалось сделать кросс-доменный запрос с помощью javascript. Как известно политика безопасности не позволяет такое делать. Но есть разные «грязные» хаки которые все таки обходят эту политику. Из всех вариантов, я выбрал самый надежный и простой в реализации.
Прокси скрипт php на серверной стороне. Суть простая мы ajax запросом посылаем параметры на наш прокси скрипт, а он в свою очередь делает запрос на указанный в параметре action адрес. После получения результата, отдает его скрипту.
На клиентской стороне
param = { action: 'http://....', // куда отсылаем запрос param1: ..., // какой то параметр 1 param2: ..., // какой то параметр 2 param3: ... // какой то параметр 3 } jQuery.ajax({ type: "POST", url: "proxy.php", dataType: "json", data: param, success: function(res){ ... } });
На серверной стороне
<?php function msg($status, $msg) { $res = array( 'status' => $status, 'msg' => $msg ); echo json_encode($res); exit(); } function post() { unset($_POST['action']); $data = array(); foreach ($_POST as $k => $v) { $data[] = $k.'='.$v; } return implode('&', $data); } if (! isset($_POST)) { msg(false, 'Не заполненые поля'); } $url = $_POST['action']; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FAILONERROR, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_TIMEOUT, 3); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, post() ); $result = curl_exec($ch); curl_close($ch); msg(true, $result); ?>