0
<< предыдущая заметкаследующая заметка >>
14 февраля 2014
POST у разных провайдеров

На разных хостингах свои заморочки.

Например, на некоторых не работает авторизационный виджет loginza.ru
Почему же? А потому что старый формат виджета подразумевал, что он в какой-то момент бросает ваш браузер на некий заранее указанный файл ulogin_xd.html, передавая ему токен в хэше:
ulogin_xd.html#token:308ec1c45fa69f9285563e75b853b1ff75ac2005

Естественно серверная сторона хэша не видит — это чисто данные пользовательского браузера. Поэтому файлик ulogin_xd.html был чисто скриптовой и занимался единственно тем, что выстригал этот злосчастный хэш, переводил в более адекватную форму (GET-параметр) и передавал другому скрипту, который уже с ним разбирался:

<html><body><script>
var o=(''+window.location.hash).replace(/\#/g,'');
if(o!='' && o.split(':')[0]=='token') {
window.parent.location.href=(''+window.location).split('/ajax/ulogin_xd.html')[0]+'/login?loginza='+o.split(':')[1];
}
</script></body></html>

И это не я придумал, это Логинза, я лишь чуть усовершенствовал под свои нужды. Но с какого-то времени Логинза осознала, что эти хэши — полная и корявая хуйня. И решила передавать токен заодно и по протоколу POST. И хэшиком конечно тоже. И еще POST.

А теперь следите за руками. Лежит файлик ulogin_xd.html, и к нему приходит запрос по протоколу POST. Что дальше? По-разному. Серверу lleo.me в Канаде похуй, он просто выдает файлик. А, скажем, апач на моем домашнем сервере или на хультуре сходит с ума, ошибка 405. Мол, как это? Файлику .html пришел POST-запрос! Тревога!


Method Not Allowed
The requested method POST is not allowed for the URL /ajax/ulogin_xd.html.

Apache/1.3.37 Server at home.lleo.me Port 80


Теперь рассмотрим другой случай. На некоторых хостингах движок не ставился. Ну, то есть сначала минимальный комплект ставился как надо через minstall.php, а вот когда уже пришла пора залезть в /install и запустить полную установку, тут движок просто вис.

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

POST /site_module/INSTALL.php HTTP/1.0
Host: hultura.ru
Referer: hultura.ru
Content-type: multipart/form-data, boundary
150e1ce5c7
Content-length: 363

[...]

На такой запрос большинство хостингов возвращало ответ, но некоторые не возвращали ничего (а еще кое-где у хостеров логи так устроены, что их пользователю не посмотриеть в реальном времени). Короче, выяснилось, что дело в строчке «Referer: hultura.ru», если ее убрать — все работает. Не спрашивайте меня, зачем она была нужна — не помню. Но главное не спрашивайте, почему хост hultura.ru, приняв по методу POST запрос и увидев в реферере себя же, сходил с ума и запрос сбрасывал.

Я так понимаю, что оба эти случая — вещи одного порядка, какая-то вселенская POST-паранойя.

<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
архив понравившихся мне ссылок
Оставить комментарий
Windows Opera
 Санкт-Петербург
1
0
Шура
1. авторизация слетела.
2. назначь на .html обработчик php. Тогда он будет post принимать без проблем. (ну, мне так кажетсЯ. у меня работает).
Windows Firefox
 Санкт-Петербург
0
0
Кошак




Windows Firefox
 Санкт-Петербург
0
0
cats-shadow
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
После апдейта с /blog перестала работать авторизация :(
Linux Firefox
 Москва
0
0
Леонит Каганофф
/blog не обновлялся очень давно... Буду чинить со временем.
Windows Firefox
 Санкт-Петербург
0
0
Кошак
А который из из движков актуален для обновления с него? (на всякий случай)
Linux Firefox
 Москва
0
0
Леонит Каганофф
Ну, бета самая последняя - home.lleo.me, ее надо прописать в список серверов.

Дело в том, что пинг в Канаду идет очень долго, а home - у меня на домашнем компе живет.
Linux Firefox
 Москва
0
0
Леонит Каганофф
Теперь - все, кроме корня lleo.me/
Linux Firefox
 Москва
0
0
Леонит Каганофф
А, стоп, авторизация? Надо зайти в /install и добавить себя в админы - "ADD ADMINS" кнопка.

С некоторого времени в движке два уровня админского доступа, уж не помню, почему, но какая-то секьюрная необходимость.

Грубо говоря, теперь можно назначать админами друзей, не давая им общий пароль, право переустанавливать движок и назначать админов далее.
Windows Firefox
 Санкт-Петербург
0
0
Кошак
>С некоторого времени в движке два уровня админского доступа, уж не помню, почему, но какая-то секьюрная необходимость.
>Грубо говоря, теперь можно назначать админами друзей, не давая им общий пароль, право переустанавливать движок и назначать админов далее.

Полезная фича, кстати. Надо разобраться и задокументировать.
Windows Safari Chrome
 Москва
0
0
azoudkov
просто тест авторизации
Linux Ubuntu Firefox
 Белая Церковь
0
0
admin
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Лёнь, у меня как не ставилось с нуля, так и не ставится. Такое ощущение, что не выкачивается в самом начале всё то, что должно быть выкачано.
Linux Firefox
 Москва
0
0
Леонит Каганофф
Да, у меня тоже. Буду править со временем.
Linux Firefox
 Москва
0
0
Леонит Каганофф
А сейчас?
Windows Firefox
 Санкт-Петербург
0
0
cats-shadow
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Установил "в чистую": minstall.php с /blog, в инсталляторе - уже с /dnevnik. Пришлось попрыгать с бубном случайным образом - не заводился первый пользователь - движок даже после создания заметки из админки сообщал, что "не существует", а в разлогиненом состоянии показывал пустое "содержание".
Windows Firefox
 Санкт-Петербург
0
0
cats-shadow
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
Сломалась авторизация через Ulogin. Через логинзу с грехом пополам работает. :(
Причем, похоже, это происки Ulogin - даже на сайтах/, что не обновлялись так происходит. Остаётся на странице, скриншот аналогичной в комментах выше.
Linux Firefox
 Москва
0
0
Леонит Каганофф
Да, я разобрался, но еще не до конца починил. Сейчас нет времени.
Windows Firefox
 Санкт-Петербург
0
0
Кошак
Ясно, ну как есть уж. Пока "традиционный вариант" (логин/пароль) работает - жить можно.

Как бы к движку прикрутить локальный вариант поддержки авторизации через OpenID? (видел же на хабре библиотеку для).
Linux Firefox
 Москва
0
0
Леонит Каганофф
Я вроде починил. А сейчас работает?
Windows Firefox
 Санкт-Петербург
0
0
cats-shadow
Этот человек не загрузил свой юзерпик, и я подобрал ему этот. Человек, пишущий такое, должен именно так выглядеть, верно?
В /blog "сервер не найден" при попытке залогиниться в форме авторизации.
Linux Firefox
 Москва
0
0
Леонит Каганофф
А теперь?

всего комментариев: 20

<< предыдущая заметка следующая заметка >>