powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Post запрос
1 сообщений из 1, страница 1 из 1
Post запрос
    #37743402
Dr1emaver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, мне нужно реализовать кросс доменный post запрос. У меня есть сайт, на нем находится гиперссылка. По нажатию на гиперссылку должен идти post запрос на другой сервер на защищенную страницу (https). Прочитал в интернете, что можно реализовать через proxy.
Что мне нужно: Послать на другой сервер на защищенную страницу (https) данные в формате json и c заголовком (content type) application/json.
Ответ от сервера будет тоже в json с заголовком application/json.

Вот что у меня есть:
файл sample.html:
Код: sql
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.
<!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="http://site.ru/jquery.js"></script>

<script type="text/javascript">
	var proxy_url = 'http://site.ru/proxy.php';
	var ajax_url = 'https://site2.ru/example'; //другой сервер, на который должен идти post запрос!
var people ={"FirstName":"Oleg","LastName":"Ivanov","amount":2.0};

$(document).ready(function(){
		$('#link').click(function(){
			
			$.ajax({
			  type: 'POST',dataType:'json',contentType:'application/json', url: proxy_url,data:people,
			
                         success: function(res) {
			  flag = res.substring(0, 2);
			    if (flag == '0|') alert('Ошибка: ' + res.substring(2, res.length));
			   else alert('Удачно: ' + res);
			  },
			  error: function(xhr, er_type) { alert('Ошибка: ' + er_type); }
			});
		});
	});
	</script>
</head>
<body>
<a href="#" id="link">Запрос</a>
</body>
</html>


Файл proxy.php
Код: sql
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.
<?php
error_reporting(0);
if (!isset($_SERVER['HTTP_X_REQUESTED_WITH'])
	|| $_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest'
	|| !count($_POST) || !isset($_POST['ajax_url']))
		die("0|Неверный запрос");
$url_info = parse_url($_POST['ajax_url']);
unset($_POST['ajax_url']);

$data = array();
foreach ($_POST as $k => $v) $data[] = $k.'='.$v;
$data = implode('&', $data);

$fp = @fsockopen(@$url_info['host'], 80, $errno, $errstr, 6);
if (!$fp) die("0|Не могу соединиться с ".@$url_info['host']);
$out  = "POST ".@$url_info['path']." HTTP/1.1\r\n";
$out .= "Host: ".@$url_info['host']."\r\n";
$out .= "Referer: /misc/proxy.php\r\n";
$out .= "User-Agent: Opera\r\n";
$out .= "Content-Type: application/x-www-form-urlencoded\r\n";
$out .= "Content-Length: ".strlen($data)."\r\n\n";
$out .= "Connection: close\r\n\r\n";
$out .= $data;
fputs($fp, $out);

$in = '';
while (($line = fgets($fp, 8192))!==false) $in .= $line;
fclose($fp);

fputs($fh, $in);
fclose($fh);

$out = substr($in, strpos($in, "\r\n\r\n") + 4);

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);
print $out;
?>



Запрос идет, но приходит ответ, что parseerror. Мне кажется, что неправильно в proxy.php. Что данные идут не в json формате..
Прошу помощи. Пожалуйста.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Post запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]