В продолжение темы.
На этот раз, устав от обычной почты хабра (от бесконечного обновления страниц, перехода по ссылкам и т.д.), я решил написать небольшое расширение для google chrome, которое должно упростить повседневные задачи хабра-человека.
Знакомьтесь — ваш друг, HabraMail!
Это, пока что, beta версия (много чего предстоит доработать), но начать пользоваться ей можно уже сейчас.
UPD: Исходный код
Остальное под катом:
После установки, на любой странице хабра, в правом нижнем углу будет отображаться его иконочка.
Щелкаем по ней и выезжает небольшое окошко с последними сообщениями в нашем «хабраящике».
Нажимаем на тему сообщения, и плавненько, без перезагрузок, получаем окошко с нашим сообщением.
Жмем на надпись «написать» или на имя автора(слева от темы сообщения), и появляется форма нового сообщения.
В форме просмотра, кстати говоря, можно еще и удалять сообщение.
Как только я начал писать это расширение — сразу столкнулся со следующего рода проблемой: хоть chrome extensions и могут отправлять кросс-доменные запросы, но при этом в заголовке запроса будет ставиться свойство «Origin», равное url'у страницы, с которой он отправляется.
Все бы ничего, да сервер хабрахабра отказывается принимать запросы с отличным от нужного Orgin.
И тут приходит на помощь favicon метод, о котором я вам и расскажу (вполне вероятно, что я не первый, кто до этого додумался).
И решил я делать кросс-доменный запрос используя iframe (content scripts подключаются ведь и туда тоже). Но вот беда — самая маленькая страница, которую я смог найти (искал я, правда, недолго) — это «ошибка 404». Конечно же, меня это не устроило, и я начал искать «альтернативное» решение.
Случайно заметил, что расширение может подключаться даже на страницу, где кроме картинки нет и вовсе ничего (например,http://example.com/example.png).
Напомню, что задача была в том, чтобы отправить запрос с домена username1.habrahabr.ru(или просто habrahabr.ru) на домен username2.habrahabr.ru.
И, используя «находку с картинкой», в моем расширении, я решил её следующим образом: вместо иконки ставим iframe без border с фиксированной шириной и высотой, в котором загружается следующий url: http://username2.habrahabr.ru/favicon.ico. В этот iframe вставляется content script, который общается с основной страницей (username1.habrahabr.ru) через расширение (используя chrome.extension.connect). Скрипт на основной странице посылает запрос к расширению, оно посылает в iframe, а он назад, и расширение возвращает ответ скрипту.
Вот такой вот получился метод отправки cross-origin запросов в chrome extensions.
С нетерпением жду отзывов и предложений!
На этот раз, устав от обычной почты хабра (от бесконечного обновления страниц, перехода по ссылкам и т.д.), я решил написать небольшое расширение для google chrome, которое должно упростить повседневные задачи хабра-человека.
Знакомьтесь — ваш друг, HabraMail!
Это, пока что, beta версия (много чего предстоит доработать), но начать пользоваться ей можно уже сейчас.
UPD: Исходный код
Остальное под катом:
Описание
После установки, на любой странице хабра, в правом нижнем углу будет отображаться его иконочка.
Щелкаем по ней и выезжает небольшое окошко с последними сообщениями в нашем «хабраящике».
Нажимаем на тему сообщения, и плавненько, без перезагрузок, получаем окошко с нашим сообщением.
Жмем на надпись «написать» или на имя автора(слева от темы сообщения), и появляется форма нового сообщения.
В форме просмотра, кстати говоря, можно еще и удалять сообщение.
Техническая реализация
Как только я начал писать это расширение — сразу столкнулся со следующего рода проблемой: хоть chrome extensions и могут отправлять кросс-доменные запросы, но при этом в заголовке запроса будет ставиться свойство «Origin», равное url'у страницы, с которой он отправляется.
Все бы ничего, да сервер хабрахабра отказывается принимать запросы с отличным от нужного Orgin.
И тут приходит на помощь favicon метод, о котором я вам и расскажу (вполне вероятно, что я не первый, кто до этого додумался).
Favicon метод
И решил я делать кросс-доменный запрос используя iframe (content scripts подключаются ведь и туда тоже). Но вот беда — самая маленькая страница, которую я смог найти (искал я, правда, недолго) — это «ошибка 404». Конечно же, меня это не устроило, и я начал искать «альтернативное» решение.
Случайно заметил, что расширение может подключаться даже на страницу, где кроме картинки нет и вовсе ничего (например,http://example.com/example.png).
Напомню, что задача была в том, чтобы отправить запрос с домена username1.habrahabr.ru(или просто habrahabr.ru) на домен username2.habrahabr.ru.
И, используя «находку с картинкой», в моем расширении, я решил её следующим образом: вместо иконки ставим iframe без border с фиксированной шириной и высотой, в котором загружается следующий url: http://username2.habrahabr.ru/favicon.ico. В этот iframe вставляется content script, который общается с основной страницей (username1.habrahabr.ru) через расширение (используя chrome.extension.connect). Скрипт на основной странице посылает запрос к расширению, оно посылает в iframe, а он назад, и расширение возвращает ответ скрипту.
Вот такой вот получился метод отправки cross-origin запросов в chrome extensions.
С нетерпением жду отзывов и предложений!