【问题标题】:Accessing redirected-to URL when making an HTTP request发出 HTTP 请求时访问重定向到的 URL
【发布时间】:2013-04-03 23:41:53
【问题描述】:

当发出导致重定向的 HTTP 请求(例如使用 URLLoader)时,是否可以访问重定向链中的任何 URL?

例如,假设发生以下情况:

  1. 我们向 example.com/a.gif 提出请求
  2. example.com 重定向到 example2.com/b.gif
  3. example2.com 重定向到 example3.com/c.gif

我已经盯着 URLLoader 及其各种事件的文档看了一段时间,但似乎也没有办法:

  1. 指示 URLLoader 不遵循重定向
  2. 在初始请求后访问任何涉及的 URL

有谁知道是否有办法做到这一点?我不喜欢使用 URLLoader,所以如果有另一个类支持此功能,我会很好地使用它。

谁能指出我正确的方向?提前致谢!

编辑 - 我应该澄清一下:我知道如何使用 DOM 调试器检测 AS3 之外的重定向。我对访问 AS3 中的重定向链特别感兴趣。看起来可以通过HttpStatusEvent 使用AIR 播放器,但是使用Flash Player 时相关属性不可用。

Edit 2 - 我也尝试过使用 HTTP 客户端库(具体来说,是 as3httpclientlib)。除了它从端口 843 加载跨域策略而不是通过向 /crossdomain.xml 发出 HTTP 请求这一事实之外,这有效。我正在使用的上下文需要后者,因此除非有办法强制 Socket 从 HTTP 而不是端口 843 加载跨域策略,否则使用带有 Socket 底层的东西是行不通的。

【问题讨论】:

  • 这些是服务器端重定向还是客户端重定向?如果他们是服务器端;它们对 Flex 应用程序不是透明的吗?
  • 它们是服务器端重定向(这就是我说“example.com”重定向到 example2.com 的原因)。自动遵循重定向。我正在尝试找到一种方法来拦截重定向,或者至少要知道它们正在发生。
  • 使用AS3HTTPClient library 可能会更成功。该库使用 Flash Socket 发出 HTTP 请求……因此,您应该能够获得 HTTP 响应及其包含的结果代码。我假设 AS3HTTPClient 遵循重定向,但是您可能必须修改源以使其调度事件以通知您它正在遵循重定向。
  • 感谢您的回复。我也试过这个,它能够做我想做的事。然而,它不会完全这样做,因为它使用 Socket 来完成它的所有网络工作,它从远程主机的端口 843 而不是 /crossdomain.xml 加载跨域策略。我没有提到这是一个要求,但它是。你知道是否有办法强制它通过 HTTP 加载跨域策略?

标签: actionscript-3 flash apache-flex


【解决方案1】:

重定向通常已经到位,因为不应再使用原始 URL。该文件在 example.com/a.gif 上不存在,因此理论上您不需要知道它。为什么需要中间请求路径?

我不知道找到任何请求的重定向链的动作脚本方法,但如果您想为特定链执行此操作,您可以使用 Firefox 的 HttpFox,或在谷歌浏览器中点击 f12 并查看网络向重定向的 URL 发出请求时的选项卡。这仅在客户端被服务器重定向到新地址(HTTP 302 响应或类似内容)时才有效。如果服务器选择在某人的浏览器请求 example.com/ 时返回 example3.com/c.gif 的内容a.gif 你无能为力。

【讨论】:

  • 当然,通常。但是,有时会出于其他原因使用重定向。例如,当您请求广告时,通常会在您实际获得内容之前进行许多重定向。这通常是因为许多公司希望看到流量,所以他们只是在提供内容之前重定向用户。我知道如何检测 AS3 之外的重定向。我对在 AS3 中做这件事特别感兴趣。
  • hm.... 这可能有用:link 特别注意 Content-Location 或设置 Max-Forwards跨度>
  • 这是一个请求头。我需要响应标头。
  • hm... 在help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/… 上添加一个事件处理程序怎么样?看起来它会在每次响应时触发一次,而不是在调用完全解决时触发。
  • 对,我试过了。它仅在遵循所有重定向后才会触发,并且只有 Adob​​e AIR(即不是 Flash Player)可以访问 responseURL / 响应标头。我刚才编辑了我的答案以澄清这一点。抱歉我没说清楚。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-25
  • 2019-09-08
  • 1970-01-01
  • 2015-09-16
  • 1970-01-01
  • 1970-01-01
  • 2020-07-23
相关资源
最近更新 更多