Сразу скажу, что использовать будем curl.
Суть проста: Отправляем данные на локальный скрипт, который принимает переменную и с помощью curl отправляет их на другой сервер. Получает ответ и выдает его в локальный скрипт.
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
var ajax_url = 'http://newdomain.com/ajax.php';
$(document).ready(function(){
$('#link').click(function(){
$.post
(
"proxy.php",
{
msg: 'wer',
target_id: 'sdf'
},
function(data) {
alert(data);
});
});
});
</script>
</head>
<body>
<a href="#" id="link">post cross domain query</a>
</body>
</html>
Локальный файл, так называемый proxy.php
<?
$url = $_POST['url'];
unset($_POST['url']);
$fields_string = "";
foreach ($_POST as $key => $value)
{
$fields_string .= $key . '=' . $value . '&';
}
rtrim($fields_string, '&');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, count($_POST));
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
$result = curl_exec($ch);
curl_close($ch);
?>
Ну и файл на удаленном сервере ajax.php
<?php
error_reporting(0);
header("Content-type: text/plain; charset=utf-8");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Connection: close");
//print_r($_POST);
if (!count($_POST))
die('ERR');
$data = array ();
foreach ($_POST as $k => $v)
$data[] = $k . '=' . $v;
echo implode('&', $data) . "\nHI from " . $_SERVER['SERVER_NAME'] . '!';
exit;
?>
|
|
download: ajax-cross-domain (16.60KB) added: 16/02/2012 clicks: 35 description: |
