2009-09-17 64 views
0

我们有一个Flash应用程序连接到返回json数据的WCF REST Web服务。您可以让Flash URLRequest/web服务在IE中的代理后面工作吗?

我们对POST请求使用URLRequest/URLLoader,而不是使用像as3httpclientlib这样的套接字的低级库。

该应用程序在正常工作过程中运行良好,但是当我们在公司代理服务器后面(即在Internet Explorer Conenction选项卡中定义了代理时),某些请求正在返回HTTP状态代码502 - DNS查找失败。 (我们使用Fiddler来检查流量)。前几个请求的连接工作正常,但似乎死亡 - 这些502错误。

这可能是什么原因造成的?

我听说使用底层套接字编程可能会导致企业环境中的代理服务器出现问题 - 但这不是我们在这里使用的。

编辑:

经进一步调查(使用招),这是发生了什么事:

  1. 后的第一个请求。
  2. 代理返回一个407(缓存请求被拒绝 - 未经认证为proxy)
  3. 请求与代理授权头
  4. Proxy会返回某种回报Proxy-Authenticate头的407再次进行。
  5. 原始请求再次进行 - 这次使用代理身份验证,但我的 授权标头(“授权:用户名:密码”)已被代理剥离,因此请求失败。

不知道如何解决这个问题?

编辑:

我加在ActionScript使用的URLRequest我的授权头。代理服务器正在使用NTLM身份验证。我添加的授权标题已在步骤2中删除。

我发现如果我使用了一个随机名称(如“安全”而不是“授权”)的标题,那么标题未被删除。

+0

如果请求是通过浏览器,通过fiddler,然后被代理拒绝,它不可能是闪存问题。您可以使用提琴手重放请求。你能重现吗?你可以与你的代理管理员聊天,并找出为什么这个请求失败? – Glenn 2009-09-17 11:16:13

+0

我会试一试..不幸的是现在不工作..但明天会尝试。感谢回复。 – dan 2009-09-17 11:56:42

+0

你指的是什么“自定义授权标题”?你是如何添加它的?你怎么能说(或者你认为是什么)代理人剥夺了它?你是说它出现在出站请求(#5)中,但没有发送到服务器?或者它不在出站请求#5中? 正在使用什么类型的身份验证响应407(NTLM/Negotiate?) – EricLaw 2009-09-18 15:15:45

回答

0

为了解决我的问题,我发现如果我用一个随机名称(如'安全'而不是'授权')的授权头,那么授权头没有被代理剥离出来。

因为我控制服务器端,并能够指定我正在寻找哪些头,这个解决方案为我工作。

0

如果提琴手说“DNS查找失败”则可能意味着要么:

1>计算机未配置为使用上游代理服务器 2>计算机被配置为使用一个上游代理服务器,但该代理服务器已关闭,或者间歇性失败。

默认情况下,Fiddler会链接到您的上游代理。当它向您的代理发送请求时,它甚至不会尝试执行DNS查找。如果Fiddler说DNS查找失败,这意味着Fiddler尝试执行DNS查找,这意味着它甚至不试图使用代理服务器,因为它未配置,或者代理自动配置脚本未能下载。

当Fiddler没有运行时,在Tools/Internet Options/Connections/LAN Settings中有什么代理设置?

还值得一提的是,在IE中,Flash使用的是IE使用的相同代理设置。所以除非你在Flash中遇到了一些非常罕见的错误,否则如果IE本身可以访问该网站,则不需要担心Flash中的代理设置。

+0

Firefox在本地出站连接上具有独立的IE代理设置。 Chrome共享IE浏览器。 – Glenn 2009-09-18 02:00:28

+0

是的,打字错误。尽管当Fiddler运行时,Firefox,Chrome,IE等都将指向Fiddler。 – EricLaw 2009-09-18 15:14:05

0

简短的回答是否定的,你不能用它来解决问题。在网络/代理配置方面,Flash无法从互联网申请资源。如果是这样,这将是一个重大的安全缺陷。

相关问题