Ах. Боль, страдание. Явное страдание.
Пока вы выяснили, как добавить заголовок перед выполнением вызова, неприятная правда заключается в том, что где-то в глубине пространства интеграции Flash и браузера ваши заголовки снова удаляются.
Из моего поста в прошлом году на verveguy.blogspot.com
Итак, я раскрыл Истину. (Я думаю)
Это более мучительно, чем можно себе представить
1 / Все запросы HTTP GET удаляются из заголовков. Его нет в стеке Flex, поэтому, вероятно, это базовая среда выполнения проигрывателя Flash
2 / Все запросы HTTP GET с типом содержимого, отличным от application/x-www-form-urlencoded
, преобразуются в запросы POST
3 / Все запросы HTTP POST, у которых нет фактически опубликованных данных, преобразуются в запросы GET. Смотри 1 / и 2 /
4 / Все запросы HTTP PUT и HTTP DELETE превращаются в запросы POST. Похоже, это ограничение браузера, из-за которого проигрыватель Flash закреплен. (?)
На практике это сводится к тому, что если вы хотите передавать заголовки во всех запросах, вы всегда должны использовать POST, и вы должны найти другой способ передать семантику операции, которую вы «действительно хотели». Сообщество Rails решило передать ?_method=PUT/DELETE
в качестве решения проблем с браузером, лежащих в основе 4 /
Поскольку Flash добавляет замечательную боль при удалении заголовка в GET, я также использую ?_method=GET
в качестве обходного пути для этого. Тем не менее, так как это срабатывает на 3 /,
Я передаю фиктивный объект в качестве закодированных данных POST. Это означает, что мой сервис должен игнорировать фиктивные данные по запросу ?_method=GET
.
Крайне важно знать о 2 /. Это потратило кучу моего времени.
Я встроил всю эту обработку в новый класс RESTService с поддержкой разметки MXML, поэтому можно делать вид, что его нет на стороне клиента.
Надеюсь, это кому-нибудь поможет.