如何通过代理在IIS中防止跨域问题?

时间:2009-06-23 08:53:37

标签: .net web-services iis proxy cross-domain

我有一个用Delphi编写的站点,需要从.NET Web服务获取数据。为了使用Web服务,我首先附加到.NET网站,其中包含最终用户必须填写的向导,然后调用Web服务以填充AJAX下拉列表并且将数据返回给调用的Delphi Web应用程序。

所以,要清楚......

  1. Delphi网站打开.NET网站
  2. .NET网站从.NET Web服务
  3. 填充AJAX下拉列表
  4. 当用户在.NET Web向导上单击提交时,它会调用.NET Web服务来获取数据并返回到Delphi网站
  5. 然而,调用.NET Web服务来填充下拉列表会导致IE6(实际上所有浏览器)将此视为跨域安全威胁,并且我得到“此页面正在访问不受其控制的信息。”造成安全风险......“错误。

    下拉代码如下(如果这有帮助)......

    在.apsx文件中

    <asp:DropDownList ID="DocCategoryDropDown" 
                  runat="server" 
                  OnSelectedIndexChanged="DocCategoryDropDown_SelectedIndexChanged"
                  AutoPostBack="true">
    </asp:DropDownList>
    <ajaxToolkit:CascadingDropDown ID="DocCategoryCascadingDropDown" 
                               runat="server" 
                               TargetControlID="DocCategoryDropDown"
                               LoadingText="[Loading...]" 
                               Category="CategoryId" 
                               UseContextKey="True" 
                               ContextKey="NY"
                               PromptText="Select a Category" 
                               ServiceMethod="GetDocCategory" 
                               ServicePath="tba">
    </ajaxToolkit:CascadingDropDown>
    

    在C#文件中

    DocCategoryCascadingDropDown.ServicePath = path;
    

    如果路径与网站位于同一台服务器上,它可以正常工作,但如果路径不是,我会收到警告,因此它必须是跨域安全问题。

    之前我遇到过与Java Web服务类似的问题,我通过在Apache上使用代理来解决这个问题,以便使托管向导的Web站点和Web服务看起来存在于同一个域中,因此停止错误。

    有人能告诉我如何在IIS中做同样的事情吗?

    如果我能提供更多信息,请告诉我,因为我真的希望尽快解决这个问题。

    非常感谢提前。

1 个答案:

答案 0 :(得分:3)

好的,经过大量谷歌搜索(咬牙切齿)后,我发现这个网站能够很好地解释解决方案。

http://dotnetslackers.com/columns/ajax/MashitUpwithASPNETAJAX.aspx

了解如何询问 正确的 问题是多么重要:)