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

Код: 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
25.06.2015, 23:41
    #38993170
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сэмулировать ajax запрос на сокетах?
Для начала неплохо было бы определиться, по каким признакам обработчик считает этот запрос как аякс. Навскидку, реферер добавить и строку агента для начала.
...
Рейтинг: 0 / 0
26.06.2015, 12:14
    #38993511
meg17m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сэмулировать ajax запрос на сокетах?
vkle, у меня идет проверка в kohana 3.3:

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

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



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

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

И что делает эта is_ajax()?
...
Рейтинг: 0 / 0
26.06.2015, 14:03
    #38993654
meg17m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сэмулировать ajax запрос на сокетах?
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
26.06.2015, 16:03
    #38993887
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сэмулировать ajax запрос на сокетах?
MegaLasta, ну а дальше?
...
Рейтинг: 0 / 0
26.06.2015, 16:20
    #38993924
meg17m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сэмулировать ajax запрос на сокетах?
vkle,

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

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



А мне нужно, чтоб он считал запрос аякс запросом и заходил внутрь.
...
Рейтинг: 0 / 0
26.06.2015, 16:30
    #38993952
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сэмулировать ajax запрос на сокетах?
а что тут приходит, смотрели?
Код: php
1.
$this->requested_with()
...
Рейтинг: 0 / 0
26.06.2015, 16:52
    #38993999
meg17m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сэмулировать ajax запрос на сокетах?
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
26.06.2015, 17:01
    #38994018
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сэмулировать ajax запрос на сокетах?
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
26.06.2015, 17:09
    #38994030
meg17m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сэмулировать ajax запрос на сокетах?
SharuPoNemnogu,

Ничего не изменилось, да я этого делать и не должен. Я Юнит-тесты пишу и код фреймворка трогать не должен.
...
Рейтинг: 0 / 0
26.06.2015, 17:15
    #38994038
SharuPoNemnogu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сэмулировать ajax запрос на сокетах?
Добавьте в заголовки X-Requested-With:XMLHttpRequest , посмотрите через fiddler какие заголовки уходят. Еще бы посмотреть что сервер принимает.
...
Рейтинг: 0 / 0
26.06.2015, 17:32
    #38994065
meg17m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как сэмулировать ajax запрос на сокетах?
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
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как сэмулировать ajax запрос на сокетах? / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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