<rmcreative>

RSS

Все заметки с тегом «HTTP»

Можно уточнить:

    (1)
    (1)
    (1)
    (1)
  1. (1)
  1. Вышел официальный HTTP клиент для Yii 2

    1 июля 2016

    Выпустили официальное расширение-клиент HTTP. Написано почти целиком Павлом Климовым. До последнего времени не было тегнуто как релиз из за несовместимости с PSR-7, хотя уже много где использовалось. После долгих обсуждений всё-таки решили выпускать без PSR-7. К нему, возможно, вернёмся в 2.1.x.

    Выполнение HTTP запроса выглядит вот так:

    use yii\httpclient\Client;
     
    $client = new Client();
    $response = $client->createRequest()
        ->setMethod('post')
        ->setUrl('http://example.com/api/1.0/users')
        ->setData(['name' => 'John Doe', 'email' => '[email protected]'])
        ->send();
    if ($response->isOk) {
        $newUserId = $response->data['id'];
    }

    https://github.com/yiisoft/yii2-httpclient

    11 комментариев
  2. HTTP/2

    3 марта 2015

    17 февраля 2015 вторая версия HTTP стала кандидатом на стандарт и уже поддерживается в Chrome (--enable-spdy4), Firefox, IE 11.

    Изменения, по сравнению с 1.1, значительные и серьёзно повлияют на веб-разработку в целом.

    HTTP/2 основан на SPDY. То есть используется одно TCP соединение для передачи в обе стороны нескольких запросов-ответов. Передаваемое при этом, включая заголовки, представляется в сжатом бинарном виде. В дополнение сервер может заранее отсылать не связанные с открытой страницей ресурсы в кэш браузера.

    То есть такие техники как спрайты, сжатие и сборка CSS/JS в один файл, отдельный домен без cookie для ресурсов, несколько доменов для ресурсов, становятся не нужны и даже вредны. Правильно будет отдавать ресурсы мелкими порциями только когда они реально нужны. То есть чтобы для каждой отдельно взятой страницы количество загружаемых ресурсов было минимальным.

    13 комментариев
  3. Как Facebook подменяет ссылки

    24 мая 2012

    Наткнулся на занятную особенность Facebook. А именно на то, как он работает со ссылками.

    Для проекта потребовалось реализовать систему приглашений. Схема стандартная:

    1. Генерируем уникальный хеш.
    2. Подставляем к основному URL.
    3. Посылаем через сообщение Facebook.
    4. Получивший сообщение пользователь идёт по ссылке с хешем и видит своё приглашение.

    В процессе тестирования вроде-бы простой схемы выяснилось интересное: на шаге №4 пользователь получал сообщение без хеша.

    Первое подозрение пало на параметр, передаваемый GET-ом. Сделали частью URL и… не помогло, что сильно удивило и озадачило. Через несколько дней копаний оказалось, что при отправке сообщения:

    1. Facebook идёт по ссылке в сообщении.
    2. Парсит страницу и берёт из неё тег <meta property="og:url" content="http://example.com/content/my-stuff" />. Хеша для приглашения у нас в этом URL, конечно, не было.
    3. Подменяет ссылку, которая была в сообщении, на ту, что была получена из метатега.

    Отсюда выводы:

    1. При работе с Facebook помните про особые метатеги.
    2. Никогда не меняйте состояние приложения через GET.
    6 комментариев
  4. Опасность слепой проверки заголовка X-Forwarded-For

    15 апреля 2012

    Сегодня пришёл pull-request в Yii на эту тему. В классе CHttpRequest есть метод getUserHostAddress, который отдаёт нам IP пользователя. Предложение было перед возвратом $_SERVER['REMOTE_ADDR'] проверить, а нет ли чего в $_SERVER['HTTP_X_FORWARDED_FOR'], и, если есть — вернуть. Мотивация — будут видны IP пользователей за прокси.

    Так как такое заблуждение встречается ну очень часто, я даже не сразу вспомнил, откуда берётся $_SERVER['HTTP_X_FORWARDED_FOR']. А берётся он из заголовка HTTP запроса X-Forwarded-For и означает это то, что придти нам может что угодно.

    А теперь представим, что разработчик воспользовался изменённым методом getUserHostAddress, проверяющим X-Forwarded-For:

    if(in_array(Yii::app()->request->getUserHostAddress(), $allowedAddresses))
    {
      // даём доступ к админке
    }

    Тем, кто пишет на Zend Framework, кстати, стоит проверить свой код потому как Zend_Controller_Request_Http::getClientIp() без переданного аргументом false как раз проверяет X-Forwarded-For:

    /**
      * Get the client's IP addres
      *
      * @param  boolean $checkProxy
      * @return string
      */
      public function getClientIp($checkProxy = true)
      {
        if ($checkProxy && $this->getServer('HTTP_CLIENT_IP') != null) {
          $ip = $this->getServer('HTTP_CLIENT_IP');
        } else if ($checkProxy && $this->getServer('HTTP_X_FORWARDED_FOR') != null) {
          $ip = $this->getServer('HTTP_X_FORWARDED_FOR');
        } else {
          $ip = $this->getServer('REMOTE_ADDR');
        }
        return $ip;
      }

    Заслал репорт в трекер Zend Framework на всякий случай.

    36 комментариев
  5. HTTP Developer's Handbook, Chris Shiflett

    12 июня 2010

    Ещё одна хорошая книга, которая, опять же, по непонятным мне причинам не была за семь лет переведена на русский язык. Несмотря на столь почтенный возраст, материал на 312 страницах актуален по сей день и очень полезен.

    Главы 1—4 первой части вводные в протокол HTTP в целом.

    Вторая часть является сжатым, но точным пересказом спецификации HTTP с поправками на реальность. Немного скучновата, зато отлично используется в качестве справочника после первого прочтения.

    Третья часть, состоящая из трёх глав полностью посвящена реализации поддержки состояния и хранению клиентских данных.

    Четвёртая часть — вопросам производительности: кэшированию, сжатию, распределению нагрузки и т.д.

    Пятая — безопасности: безопасности в общем, распространённым атакам, SSL и др. Кстати, этот же автор написал отдельную книгу на эту тему.

    Шестая и завершающая часть рассказывает о развитии протокола HTTP и его будущем.

    Книгу к прочтению однозначно рекомендую всем, кто не знает наизусть спецификации HTTP.

    Книга на books.ru

    1 комментарий
  6. Типы HTTP-запросов и философия REST

    25 января 2009

    Краткое описание принципа REST и использования в его контексте методов GET, POST, PUT и DELETE.

    Читаем

    Комментарии тоже довольно полезны.

    Да, кстати. Имеется инвайт на Хабр. Отдам в руки человеку, у которого есть хорошая статья и желание её опубликовать.

    2 комментария