【问题标题】:URLRequest gives stream error (403 Forbidden)URLRequest 给出流错误(403 Forbidden)
【发布时间】:2014-02-17 17:09:37
【问题描述】:

我正在尝试使用 as3 中的 urlloader 和 urlrequest 发出 http 请求。这给出了流错误 2032 的错误,那是因为该网站不允许来自 Flash 的 urlrequests?

无论如何,为什么会发生这种情况?我怎么能“愚弄”网站以为这是从浏览器(firefox、chrome)发出的正常请求?

        var loader:URLLoader = new URLLoader();
        var request:URLRequest = new URLRequest("http://www.travian.com");

        loader.addEventListener(Event.COMPLETE, on_complete);
        loader.load(request);

编辑:我想问的是...网站如何知道这是来自 adobe air 的 http 请求?以及如何使它看起来像来自 Firefox/Chrome 或其他任何东西的 http 请求。

【问题讨论】:

  • 您点击的网址是什么?您可以尝试使用另一个网址,例如 stackoverflow.com 吗?
  • 网址与我给出的代码示例中的相同。 travian.com。 Stackoverflow.com 正常工作。但我知道这个网站(这是一个游戏)travian.com 会尝试阻止这类事情以防止机器人/作弊。您也无法将网站放入 iframe。我认为我的问题比 as3 更笼统,更多:网站如何知道它是来自 adobe air 程序的请求。以及如何隐藏这些信息。
  • 好的,我玩过 Firefox 和 Wireshark 的“修改标题”。这:Referer:app:/Travian.swf
  • 是的,您可以在 AS3 中设置自定义标头,是什么部分阻止了请求?对我来说,这听起来更像是服务器配置问题,而不是闪存安全停止。
  • 我会建议查看 crossdomain.xml,但由于服务器以 403 响应,我肯定会查看服务器配置

标签: actionscript-3 urlloader urlrequest


【解决方案1】:

在服务器上公共目录的根目录下添加一个名为 crossdomain.xml 的文件。

它应该指向这里: http://www.travian.com/crossdomain.xml

并且应该包含以下内容:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <site-control permitted-cross-domain-policies="master-only" />
  <allow-access-from domain="*" secure="false" />
  <allow-http-request-headers-from domain="*" headers="*" />
</cross-domain-policy>

【讨论】:

  • 我对此没有最深的理解,但是... Travian.com 网站会阻止任何在 http 标头中使用 Referer 访问该网站的人。是否可以使用您编写的解决方案绕过此问题?
  • 我认为您需要查看服务器配置 - 在这里我无能为力。
猜你喜欢
  • 1970-01-01
  • 2018-11-22
  • 1970-01-01
  • 1970-01-01
  • 2017-05-22
  • 1970-01-01
  • 2014-09-18
  • 2015-11-23
  • 1970-01-01
相关资源
最近更新 更多