Кроссдоменный ajax

Nezhnayka

Новичок
Добрый день. Нашел в рунете "PHP proxy Simple PHP Proxy Бенома Альмана", но никак не могу понять как им пользоваться.. Особенно смутил вот этот код в данном скрипте :
PHP:
$url = $_GET['url'];

if ( !$url ) {
  
  // Passed url not specified.
  $contents = 'ERROR: url not specified';
  $status = array( 'http_code' => 'ERROR' );
  
} else if ( !preg_match( $valid_url_regex, $url ) ) {
  
  // Passed url doesn't match $valid_url_regex.
  $contents = 'ERROR: invalid url';
  $status = array( 'http_code' => 'ERROR' );
  
} else {
  $ch = curl_init( $url );
  
  if ( strtolower($_SERVER['REQUEST_METHOD']) == 'post' ) {
    curl_setopt( $ch, CURLOPT_POST, true );
    curl_setopt( $ch, CURLOPT_POSTFIELDS, $_POST );
  }
а именно, здесь получаем параметр url, переданный методом get:
PHP:
$url = $_GET['url'];
а ниже, если параметр url, переданный методом get есть, идет проверка на запрос к данному скрипту методом post :
PHP:
 if ( strtolower($_SERVER['REQUEST_METHOD']) == 'post' )
Попробовал обратиться к данному скрипту кроссдоменно передав get-ом парамет url (адрес скрипта с ajax, с которым все хорошо функционирует не кроссдоменно). В ответ ничего не получил !.. Вообщем, откликнитесь плиз кто работал с данным скриптом, объясните пожалуйста, как с помощью него организовать кроссдоменный ajax ?
 

radioheaded

PHP нуб
Я с ним не работал, но суть тут понять несложно. Вы не можете выполнять AJAX запросы на чужие домены (без особого разрешения в заголовках), но можете выполнять на свои. На каком-то своем домене размещаете подобный скрипт. В параметрах этому скрипту вы передаете параметры AJAX запроса. Скрипт выполняет обычный GET запрос (в данном случае — при помощи curl), получает нужные данные и возвращает ответ. То есть, это такой дубовый костыль.

Если вы хотите организовать AJAX запросы между своими доменами или предоставить доступ с чужих доменов, посмотрите в сторону JSONP.
 

Lionishy

Новичок
radioheaded
Скорее наоборот.
JSONP -- это костыль.


Nezhnayka
Здесь, скорее всего, идея в том, чтобы отправить POST запрос на сторонний ресурс, если пришёл POST запрос на доверенный.
А передача самого адреса стороннего ресурса в $_GET просто для удобства. Если бы доверенную зону всегда можно было расширить, то в строке адреса значился бы адрес стороннего ресурса, потому лучше ему там и остаться.
 

Nezhnayka

Новичок
Подскажите, может есть какой-то более приемлимый способ организовать кроссдоменный ajax. Оказалось что у моего хостера с курлом видимо проблемы .. curl_init() - не работает. Просто не сталкивался с такой задачей, подскажите пожалуйста.
 

radioheaded

PHP нуб
Распиши подробнее, что нужно сделать. С какого домена на какой домен запрос?
 

Nezhnayka

Новичок
Распиши подробнее, что нужно сделать. С какого домена на какой домен запрос?
Вот http://www.sven-soft.com .. и вложил исходник клиента с ajax с данного ресурса (не кроссдоменный). В ajax-запросе get-ом передаются два параметра (специально так сделал). Можете показать как из него сделать кроссдоменный ? Спасибо !
 

Вложения

radioheaded

PHP нуб
Еще раз: с какого домена и на какой должен быть выполнен запрос?
 

radioheaded

PHP нуб
Если этот домен ваш, то в чем проблема? Либо jsonp (если POST не нужен), либо гуглите аббревиатуру, которую fixxer написал.
 

Nezhnayka

Новичок
Если этот домен ваш, то в чем проблема? Либо jsonp (если POST не нужен), либо гуглите аббревиатуру, которую fixxer написал.
sven-soft.com - мой домен, на нем и клиент и сервер, но дергать сервер ajax-ом мне нужно со сторонних доменов. (клиент на sven-soft.com положил только для того, чтобы было видно, что не кроссдоменно все работает, но дергать серверный скрипт ajax-ом нужно со сторонних доменов, с каких ?, да с каких угодно, в том то и смысл, чтобы кроссдоменно ajax-ом дергать серверный скрипт на sven-soft.com)
 
Сверху