Подавление диалога аутентификации браузера - PullRequest
8 голосов
/ 19 июля 2009

Я прошу прощения, что уже есть подобный вопрос, но я хотел бы задать его более широко.

Можно ли вообще определить на стороне клиента веб-приложения, будет ли запрос ресурса возвращать код состояния 401 и вызвать в браузере уродливое диалоговое окно аутентификации?

Или есть ли вообще какой-нибудь способ загрузить аудиофайл mp3 во флэш-память, которая невидимо не срабатывает в случае кода состояния 401 вместо того, чтобы позволить браузеру показывать уродливый диалог?

Во время выполнения Adobe Air аутентификация будет подавлена, если я установлю свойство «authenticate» объекта URLRequest, но это свойство отсутствует во время выполнения Flash. Подойдет любое решение, которое работает на клиенте. XMLHttpRequest вряд ли будет работать, поскольку ресурсы в вопросах будут находиться в разных доменах.

Важно невидимо завершать работу с ошибкой, потому что у приложения будет список множества аудиоресурсов, и нет смысла беспокоить пользователя, чтобы попытаться выполнить аутентификацию для одного, когда доступно много других. Важно, чтобы решение работало на клиенте, поскольку рассматриваемые mp3-файлы поступают с разных серверов, находящихся вне моего контроля.

Ответы [ 4 ]

1 голос
/ 19 июля 2009

У меня та же проблема с API Twitter - любой защищенный пользователь требует, чтобы клиент прошел аутентификацию.

Единственное решение, которое я смог найти, - это загрузить страницы на сервер и вернуть список URL с кодом ответа http.

0 голосов
/ 20 июля 2009

Если вы используете URLRequest для получения файлов, то вы сталкиваетесь не только с элегантной обработкой ошибок, но и с принципиальной разницей во времени выполнения Flash и AIR.

Если вы используете объект URLRequest для получения файлов, вы будете получать сообщение об ошибке безопасности от Flash при каждом запросе к каждому серверу, на котором не установлен файл политики, разрешающий подобные запросы. AIR разрешает эти запросы, поскольку в основном это клиент. Это имеет смысл, так как это разница между установкой приложения и посещением веб-страницы.

Я не хочу давать ответ без ответа, но если вы не можете сделать серверный вызов, и вы подключаетесь к целому ряду "неизвестных" серверов, это будет трудный путь для мотыги.

Но, может быть, я неправильно понимаю, вы просто пытаетесь связать файлы с файлами и не дать пользователю получить плохие ссылки, или вы пытаетесь загрузить файлы?

0 голосов
/ 19 июля 2009

Просто оберните ваш доступ к ресурсу, который может потребовать аутентификации для вызова Ajax. Вы можете поймать код ответа и использовать javascript, чтобы делать все, что вы хотите (т.е. воспроизводить этот звук). Если с кодом ответа все в порядке, используйте javascript для перенаправления пользователя на ресурс.

Скорее всего, этот подход будет генерировать немного большую нагрузку на сервер (вам, возможно, придется прибегнуть к загрузке одного и того же ресурса несколько раз), но он должен работать. Любой хороший учебник по использованию XMLHttpRequest должен содержать все, что вам нужно. Взгляните, например, на http://www.xul.fr/en-xml-ajax.html

0 голосов
/ 19 июля 2009

"Можно ли вообще определить на стороне клиента веб-приложения, будет ли запрос ресурса возвращать код состояния 401 и вызвать в браузере уродливый диалог аутентификации?"

Нет, не в общем. Ответ 401 является единственным стандартным способом для сервера указать, что аутентификация необходима.

...