如何防止ie解码flash中的utf-8 url?

发布于 2024-11-07 17:33:57 字数 851 浏览 3 评论 0原文

我发现在 flash(至少 10.x)和 ie(7、8、9)中,如果我尝试加载包含转义 utf-8 字符的图像 url (p%C3%83%C2%A5)即使我对它们进行双重或三重编码,字符也会在发出 url 请求之前被解码。有什么办法可以防止这种情况,以便我想要的网址(带有转义符)实际上就是所请求的?

它引起的问题是我们在 utf-8 解码的 url 请求上给编码的 url 提供 301 的 http 状态,然后 flash 尝试请求(但 ie 再次解码它),并且由于 301 + ie 我陷入了无限循环自动解码。

编辑,添加代码示例:

var url:URLRequest = new URLRequest('http://mydomain.com/p%C3%A5.jpg');
var loader:Loader = new Loader();
loader.load(url);

现在我希望请求以 http://mydomain 的形式传递。 com/p%C3%A5.jpg(在其他浏览器中也是如此),但在 IE 中,它会越过该行 http://mydomain.com/pà.jpg

编辑:我还尝试了用 %25 替换 % (对 % 进行双重编码)的(好)建议,但这不起作用,它只是导致了此请求通过网络:

http://mydomain.com/p%25C3%25A5.jpg

I'm finding that in flash (10.x at least) and ie (7, 8, 9) that if I try to load an image url that contains escaped utf-8 characters (p%C3%83%C2%A5) that the characters get decoded before it makes the url request, even if I double or triple encode them. Is there any way to prevent this so the url (with escapes) the way I want it is actually what is requested?

The problem its causing is we give a http status of 301 on utf-8 decoded url requests to the encoded url which flash then tries to request (but ie decodes it again) and I get stuck in an infinite loop because of the 301 + ie auto-decoding.

EDIT, adding code sample:

var url:URLRequest = new URLRequest('http://mydomain.com/p%C3%A5.jpg');
var loader:Loader = new Loader();
loader.load(url);

Now I want the request to go over the line as http://mydomain.com/p%C3%A5.jpg (and it does in other browsers), but in IE it goes over the line as http://mydomain.com/på.jpg

EDIT: I also tried the (good) suggestion of replacing % with %25 (double encoding the %) but that didn't work, it just caused this request to go over the wire:

http://mydomain.com/p%25C3%25A5.jpg

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

顾铮苏瑾 2024-11-14 17:33:57

IE 可能首先尝试通过解码来解析文件名。

301 是重定向
为什么不直接制作一个重定向页面
这可能是您的另一种选择。

var url:URLRequest = new URLRequest('http://mydomain.com/redirpage.php?page=p%C3%A5.jpg');

IE is probably trying to resolve the file name by decoding it first.

301 is a redirect
Why not just make a redirct page
This could be another option for you.

var url:URLRequest = new URLRequest('http://mydomain.com/redirpage.php?page=p%C3%A5.jpg');
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文