Выполнение запросов от Flash для URL со знаком + - PullRequest
3 голосов
/ 20 августа 2011

Я размещаю изображения на Amazon S3 и использую их в своем приложении Flash. Мое приложение получает подписанные URL-адреса S3, которые указывают на изображения в S3. URL выглядит примерно так (разрывы строк добавлены для ясности):

http://s3.amazonaws.com/my-bucket/my-image.jpg?
  AWSAccessKeyId=AKIAI7PSLIMJFIA2JRQG&
  Expires=1313812683&
  Signature=yhnSe47GRjReUQlfG/S/A+JJTdo=

Проблема здесь со знаком +, который может встречаться в подписи. Если я отправляю знак + как есть, то браузер считает, что это пробел, как и должно быть в соответствии со спецификациями URL. Действительно, S3 не должен использовать + знаки по этой причине, но похоже, что что-то, что они упустили .

Обычно это не проблема, поскольку вы просто заменяете знак + на %2B. Тем не менее, Flash имеет поведение по умолчанию, которое затрудняет это.

Из того, что я вижу, объект URLRequest настроен на , всегда кодирует URL-адреса, как если бы он был передан через функцию encodeURI. Я не вижу способа отключить это. К сожалению, encodeURI не кодирует + знаков, но делает кодировок % знаков.

Это означает, что если я оставлю здесь знак +, то Flash оставит его в покое, и S3 решит, что в моем URL есть пробел. Если я использую %2B, то Flash превращает его в %252B из-за кодирования %. Doh!

Кто-нибудь видит способ обойти это, что мне не хватает?

1 Ответ

2 голосов
/ 20 августа 2011

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

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/URLRequest.html?filter_flash=cs5&filter_flashplayer=10.2&filter_air=2.6

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...