从Flash请求带有+符号的URL的请求

时间:2011-08-20 03:19:49

标签: actionscript-3 amazon-s3 url-encoding

我在Amazon S3上托管图片并在我的Flash应用程序中使用它们。我的应用程序接收签名的S3 URL,指向S3中的图像。 URL看起来像这样(为了清晰起见,添加了换行符):

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

此处的问题是签名中可能出现的+符号。如果我按原样发送+符号,那么浏览器认为它是一个空格,因为它应该根据URL规范。实际上,S3出于这个原因不应该使用+符号,但它似乎是something they overlooked

通常这不是问题,因为您只需将+符号替换为%2B。但是,Flash有一些默认行为,这使得这很困难。

从我所看到的情况来看,URLRequest对象设置为始终编码URL,就好像它是通过encodeURI函数传递的一样。我没有办法解决这个问题。遗憾的是,encodeURI不对+个符号进行编码,但 编码%个符号。

这意味着如果我将+符号留在那里,那么Flash会将其留下,而S3认为我的网址中有空格。如果我使用%2B,则由于对%252B进行编码,Flash会将其转换为%。卫生署!

有人看到我想念的方法吗?

1 个答案:

答案 0 :(得分:2)

我认为它不会自动更改提交给它的网址。 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