Ich hoste Bilder auf Amazon S3 und verwende sie in meiner Flash-Anwendung. Meine Anwendung erhält signierte S3-URLs, die auf die Bilder in S3 verweisen. Die URL sieht in etwa so aus (Zeilenumbrüche zur Verdeutlichung hinzugefügt):
http://s3.amazonaws.com/my-bucket/my-image.jpg?
AWSAccessKeyId=AKIAI7PSLIMJFIA2JRQG&
Expires=1313812683&
Signature=yhnSe47GRjReUQlfG/S/A+JJTdo=
Das Problem liegt hier bei der +
Zeichen, die in der Signatur vorkommen können. Wenn ich die +
so wie es ist, dann denkt der Browser, dass es ein Leerzeichen ist, wie es nach den URL-Spezifikationen sein sollte. Wirklich, S3 sollte nicht +
aus diesem Grund, aber es scheint etwas, das sie übersehen haben .
Normalerweise ist dies kein Problem, da Sie einfach die +
Zeichen mit einer %2B
. Flash verfügt jedoch über einige Standardfunktionen, die dies erschweren.
Soweit ich das beurteilen kann, ist die URLRequest
Objekt wird eingerichtet, um つねに kodiert URLs so, als ob sie durch den encodeURI
Funktion. Ich sehe keine Möglichkeit, diese Funktion zu deaktivieren. Leider, encodeURI
verschlüsselt nicht +
Zeichen, aber es fait verschlüsseln %
Zeichen.
Das bedeutet, dass ich, wenn ich die +
Zeichen ein, dann lässt Flash es in Ruhe und S3 denkt, ich hätte ein Leerzeichen in meiner URL. Wenn ich %2B
dann verwandelt Flash es in %252B
durch die Kodierung der %
. Puh!
Sieht jemand eine Möglichkeit, die ich übersehen habe?