powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как сэмулировать ajax запрос на сокетах?
14 сообщений из 14, страница 1 из 1
Как сэмулировать ajax запрос на сокетах?
    #38993061
Фотография meg17m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что нужно добавить в код:

Код: php
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.
$mobile = '+799999999';

        $postData = array(
            'action'=>'repair', 'type'=>'mobile', 'mobile'=>$mobile
        );

        $files = [];

        // получаем данные для запроса
        list($boundary, $content) = $this->getContent($postData, $files);
        // формируем правильный запрос
        $content  = 'POST /repair  HTTP/1.1' . "\n"
            . 'Host: v8-2.orionlab.loc' . "\n"
            . 'Content-Type: multipart/form-data; boundary=' . $boundary . "\n"
            . 'Content-Length: ' . strlen($content) . "\n"
            . 'Connection: close'
            . "\n\n"
            . $content;
        // ошибка подключения
        $errno = 0;
        $errstr = '';
        // ответ
        $responce = '';
        // подключаемся
        if(!($socket = fsockopen($_SERVER['HTTP_HOST'], 80, $errno, $errstr, 15))) {
            die('FAIL!');
        }
        // отправляем данные
        fwrite($socket, $content);
        // получаем ответ
        while (!feof($socket)) {
            $responce .= fgets($socket, 128);
        }
        $this->template->center_block = $responce;


чтобы обработчик /repair посчитал его аякс запросом?
...
Рейтинг: 0 / 0
Как сэмулировать ajax запрос на сокетах?
    #38993170
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала неплохо было бы определиться, по каким признакам обработчик считает этот запрос как аякс. Навскидку, реферер добавить и строку агента для начала.
...
Рейтинг: 0 / 0
Как сэмулировать ajax запрос на сокетах?
    #38993511
Фотография meg17m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle, у меня идет проверка в kohana 3.3:

Код: php
1.
2.
3.
 
if($this->request->post('action') === 'repair' && $this->request->is_ajax()) {
   .............
...
Рейтинг: 0 / 0
Как сэмулировать ajax запрос на сокетах?
    #38993524
Фотография meg17m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добавление строк:

Код: php
1.
2.
. 'User-Agent: Chrome/43.0' . "\n"
. 'Referer: http://v8-2.orionlab.loc/repair' . "\n"



не помогло, на аякс это, ясное дело, никак не повлияло.
...
Рейтинг: 0 / 0
Как сэмулировать ajax запрос на сокетах?
    #38993642
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegaLastavkle, у меня идет проверка в kohana 3.3:

Код: php
1.
2.
3.
 
if($this->request->post('action') === 'repair' && $this->request->is_ajax()) {
   .............

И что делает эта is_ajax()?
...
Рейтинг: 0 / 0
Как сэмулировать ajax запрос на сокетах?
    #38993654
Фотография meg17m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,

Проверяет, является ли запрос аякс-запросом. Это стандартная кохановская ф-ия.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
/**
	 * Returns whether this is an ajax request (as used by JS frameworks)
	 *
	 * @return  boolean
	 */
	public function is_ajax()
	{
		return ($this->requested_with() === 'xmlhttprequest');
	}



Реализована в системных классах коханы.
...
Рейтинг: 0 / 0
Как сэмулировать ajax запрос на сокетах?
    #38993887
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegaLasta, ну а дальше?
...
Рейтинг: 0 / 0
Как сэмулировать ajax запрос на сокетах?
    #38993924
Фотография meg17m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,

Ну а что дальше? Вот мой скрипт, к которому я обращаюсь через сокет, и видит, что это обычный пост запрос, а никакой не аякс, и не заходит вовнутрь условия:

Код: php
1.
2.
if($this->request->post('action') === 'repair' && $this->request->is_ajax()) {
   .............



А мне нужно, чтоб он считал запрос аякс запросом и заходил внутрь.
...
Рейтинг: 0 / 0
Как сэмулировать ajax запрос на сокетах?
    #38993952
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что тут приходит, смотрели?
Код: php
1.
$this->requested_with()
...
Рейтинг: 0 / 0
Как сэмулировать ajax запрос на сокетах?
    #38993999
Фотография meg17m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SharuPoNemnogu,

В общем, там вот это происходит:
Код: php
1.
2.
3.
4.
5.
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']))
			{
				// Typically used to denote AJAX requests
				$requested_with = $_SERVER['HTTP_X_REQUESTED_WITH'];
			}


http://ruseller.com/lessons.php?id=1028&rub=37
...
Рейтинг: 0 / 0
Как сэмулировать ajax запрос на сокетах?
    #38994018
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegaLasta,

мне не интересно, что там происходит, мне интересно

Код: php
1.
var_dump($this->requested_with()); //внутри is_ajax



попробуй так

Код: php
1.
2.
3.
4.
public function is_ajax()
	{
		return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest';
	}
...
Рейтинг: 0 / 0
Как сэмулировать ajax запрос на сокетах?
    #38994030
Фотография meg17m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SharuPoNemnogu,

Ничего не изменилось, да я этого делать и не должен. Я Юнит-тесты пишу и код фреймворка трогать не должен.
...
Рейтинг: 0 / 0
Как сэмулировать ajax запрос на сокетах?
    #38994038
SharuPoNemnogu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавьте в заголовки X-Requested-With:XMLHttpRequest , посмотрите через fiddler какие заголовки уходят. Еще бы посмотреть что сервер принимает.
...
Рейтинг: 0 / 0
Как сэмулировать ajax запрос на сокетах?
    #38994065
Фотография meg17m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SharuPoNemnogu,

да, вот так вот:

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
$content  = 'POST /repair  HTTP/1.1' . "\n"
            . 'Host: v8-2.orionlab.loc' . "\n"
            . 'Content-Type: multipart/form-data; boundary=' . $boundary . "\n"
            . 'Content-Length: ' . strlen($content) . "\n"
            . 'User-Agent: Chrome/43.0' . "\n"
            . 'Referer: http://v8-2.orionlab.loc/repair' . "\n"
            . 'X-Requested-With: XMLHttpRequest' . "\n"  // <--------------------
            . 'Connection: close'
            . "\n\n"
            . $content;


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


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