2

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

所以,要明确...

  1. Delphi 网站打开 .NET 网站
  2. .NET 网站从 .NET Web 服务填充 AJAX 下拉列表
  3. 当用户在 .NET Web 向导上单击提交时,它会调用 .NET Web 服务来获取数据并返回到 Delphi 网站

但是调用 .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 服务的网站看起来存在于同一个域中,从而停止错误。

谁能告诉我如何在 IIS 中做同样的事情,好吗?

如果我可以提供更多信息,请告诉我,因为我真的很想尽快解决这个问题。

提前谢谢了。

4

1 回答 1

3

好的,经过多次谷歌搜索(和咬牙切齿),我发现这个网站很好地解释了解决方案。

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

只是表明知道如何提出正确的问题是多么重要:)

于 2009-06-24T09:27:14.417 回答