Same origin policy

Jun 15, 2011 04:27

По долгу службы надо было освоить современный браузерный javascript и конкретно jQuery: что ж, в целом, мне скорее все понравилось, чем нет. Все такое простенькое, аккуратное, json веселый: короче, всего изучения на час максимум, чтобы уже начать что-то активно реализовывать.

Но периодически внезапно встречается крайне нелогичное (на мой взгляд) поведение, а средств отладки как-то особо и нет. Вот, например: целый день убил на тупейшую проблему. Не работает один XHR-запрос:

  • Хорошо, смотрю в firebug: запрос отсылается.
  • Гашу веб-сервер, поднимаю "эмулятор" через "nc -l", проставляю необходимый урл, смотрю в консоль: HTTP-запрос приходит.
  • Отлично, через этот же netcat генерирую руками HTTP-ответ и отправляю обратно -- он уходит.
  • Браузер скупо ругается: "error".
Блядь, в чем конкретно "error"? Я же своими глазами смотрю: запрос пришел, ответ ушел, браузер его получил -- почему "error"?

Разумеется, я исследовал инет. Разумеется, я видел разделы про cross-domain requests, но мне даже в голову не пришло, что в этом причина :)

Нет, ну ей-богу: ну запрещено вот делать XMLHttpRequest на url, в котором отличается протокол, домен или порт (prevents many such attacks, such as cross-site scripting и так далее). Так блин почему бы тогда фаерфоксу не делать этого запроса, раз нельзя?! Нет ведь, он же сначала его выполняет, получает данные, и лишь потом выдает "error" скрипту. Зачем? Редиректа чтоли какого-то ждет?

firebug, firefox, code, xmlhttprequest, js, same origin policy, javascript, jquery, xhr

Previous post Next post
Up