Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Почему под Mozilla Firefox евента httpStatus возвращает 0? (http://www.flasher.ru/forum/showthread.php?t=113013)

DeniOR 16.06.2008 16:24

Почему под Mozilla Firefox евента httpStatus возвращает 0?
 
Для коннекта с сервером использую: URLStream

Сервер может отдавать разные ошибки 400, 402, 403 в общем не важно.

Ловлю евенту httpStatus и спрашиваю у нее status:

Под IE 6-7 - все адекватно, возвращает соответствующий статус,
Под Mozilla Firefox, Opera - только 0 и больше ничего.

Как решить проблему? Есть необходимость корректно обрабатывать статус в разных браузерах.

wvxvw 18.06.2008 03:18

А какое с ним приходит сообщение об ошибке? Может парсить сообщение? (со статусом вроде и раньше были проблемы).
ЗЫ. Еще такой вариант... а что будет, если попытаться тот же запрос отправить из JS (используя XMLHttpRequest) и посмотреть, чего он в статусе пишет?

Leonik 18.06.2008 11:25

в мазиле другая политика статусов, там их если я не ошибаюсь не 4 а всего 2

wvxvw 18.06.2008 11:41

Эм... 2-4? Их как бы несколько больше =)
RFC 2616:
Цитата:

Status-Code =
"100" ; Section 10.1.1: Continue
| "101" ; Section 10.1.2: Switching Protocols
| "200" ; Section 10.2.1: OK
| "201" ; Section 10.2.2: Created
| "202" ; Section 10.2.3: Accepted
| "203" ; Section 10.2.4: Non-Authoritative Information
| "204" ; Section 10.2.5: No Content
| "205" ; Section 10.2.6: Reset Content
| "206" ; Section 10.2.7: Partial Content
| "300" ; Section 10.3.1: Multiple Choices
| "301" ; Section 10.3.2: Moved Permanently
| "302" ; Section 10.3.3: Found
| "303" ; Section 10.3.4: See Other
| "304" ; Section 10.3.5: Not Modified
| "305" ; Section 10.3.6: Use Proxy
| "307" ; Section 10.3.8: Temporary Redirect
| "400" ; Section 10.4.1: Bad Request
| "401" ; Section 10.4.2: Unauthorized
| "402" ; Section 10.4.3: Payment Required
| "403" ; Section 10.4.4: Forbidden
| "404" ; Section 10.4.5: Not Found
| "405" ; Section 10.4.6: Method Not Allowed
| "406" ; Section 10.4.7: Not Acceptable
| "407" ; Section 10.4.8: Proxy Authentication Required
| "408" ; Section 10.4.9: Request Time-out
| "409" ; Section 10.4.10: Conflict
| "410" ; Section 10.4.11: Gone
| "411" ; Section 10.4.12: Length Required
| "412" ; Section 10.4.13: Precondition Failed
| "413" ; Section 10.4.14: Request Entity Too Large
| "414" ; Section 10.4.15: Request-URI Too Large
| "415" ; Section 10.4.16: Unsupported Media Type
| "416" ; Section 10.4.17: Requested range not satisfiable
| "417" ; Section 10.4.18: Expectation Failed
| "500" ; Section 10.5.1: Internal Server Error
| "501" ; Section 10.5.2: Not Implemented
| "502" ; Section 10.5.3: Bad Gateway
| "503" ; Section 10.5.4: Service Unavailable
| "504" ; Section 10.5.5: Gateway Time-out
| "505" ; Section 10.5.6: HTTP Version not supported
| extension-code

DeniOR 18.06.2008 19:37

Цитата:

Сообщение от wvxvw (Сообщение 746166)
А какое с ним приходит сообщение об ошибке? Может парсить сообщение? (со статусом вроде и раньше были проблемы).
ЗЫ. Еще такой вариант... а что будет, если попытаться тот же запрос отправить из JS (используя XMLHttpRequest) и посмотреть, чего он в статусе пишет?

В сообщении ничего полезного нет. Срабатывает евента IOErrorEvent на любые ошибки сервера кроме "200". Статус всегда 0 для всех браузеров кроме IE.

А предистория такая. Использую HessianService в качестве RemoteObject. Другой service не могу использовать по тех. особенностям сервера. Необходима базовая авторизация перед использованием удаленных методов. В Hessian она не реализованна. Пробую реализовать самостоятельно. При неверных credentials - сервер отдает ошибку типа 403 - я не могу обработать эту ситуацию потому что не получаю статус.
Все что возвращает URLStream на любые не штатные ситуации (включая bad credentials) - это IOError. В этом и проблема.

wvxvw 18.06.2008 21:10

Цитата:

Dispatched if a call to URLStream.load() attempts to access data over HTTP, and the current Flash Player is able to detect and return the status code for the request. (Some browser environments may not be able to provide this information.) Note that the httpStatus (if any) will be sent before (and in addition to) any complete or error event.
Вот, что говорит по этому поводу мануал (очевидно, что они знали, что не все браузеры это умеют...)

Может быть есть возможность имитировать статус? Т.е. присылать ОК, с текстом типа: status=403 text=Forbidden и реагировать на такой ответ аналогично ошибке? В конце концов, если не получилось авторизироваться, то, не большая разница, будет ли об этом сообщение, или не будет, и так понятно, что не получилось =)

DeniOR 19.06.2008 11:25

Цитата:

Сообщение от wvxvw (Сообщение 746348)
Вот, что говорит по этому поводу мануал (очевидно, что они знали, что не все браузеры это умеют...)

Может быть есть возможность имитировать статус? Т.е. присылать ОК, с текстом типа: status=403 text=Forbidden и реагировать на такой ответ аналогично ошибке? В конце концов, если не получилось авторизироваться, то, не большая разница, будет ли об этом сообщение, или не будет, и так понятно, что не получилось =)

Да в общем так и вышли из ситуации - сервер присылает 200 на bad credentials и уникальный текст с нашей security ошибкой. Я отлавливаю это и генерю соответсвующий fault.
В случае отсутсвия связи - приходит как и положено IOError.


Часовой пояс GMT +4, время: 01:46.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.