【发布时间】:2010-07-14 15:52:56
【问题描述】:
我的一位同事在对 .NET WebService 进行 AJAX 调用时遇到问题。该调用在 HTTP 下有效,但同一调用在 HTTPS 下出现问题。 Web 服务是在 IIS 7 服务器上使用 C# 用 .NET 4.0 编写的。
安全网站位于https://sql.data-rx.com/grouppharmdrugsearch/。 http://sql.data-rx.com/grouppharmdrugsearch/ 有一个不安全的版本。页面本身没有任何敏感信息。它嵌入(我相信一个框架)在使用 HTTPS 的客户网站上,并且我们的页面需要使用 HTTPS,因此浏览器不会给出混合的安全/不安全元素呈现消息。
要在网站上测试问题,您首先必须在第二个文本框中输入邮政编码(我一直使用 90210 进行测试),然后您可以在第三个文本框中输入药物的前几个字母。在等待一秒钟左右的额外字母后,页面调用 Web 服务以填充以提供的字母开头的可能药物选择的下拉列表。安全的 web 服务调用是到 https://sql.data-rx.com/grouppharmdrugsearch/Service/drugNameAutocomplete.svc/GetDrugList,并带有 'prefixText' 和 'count' 的 POST 数据。在 HTTP 下,服务调用成功并填充下拉列表;在 HTTPS 下,调用会收到 404 错误。如果您将浏览器指向https://sql.data-rx.com/grouppharmdrugsearch/Service/drugNameAutocomplete.svc,则可以访问 HTTPS Web 服务,但该方法在附加到服务时无法识别。
我一直在使用 Firefox 的 Tamper Data 插件来比较服务调用,它们看起来完全一样,除了一个是针对 HTTPS 站点的,一个是针对 HTTP 站点的,并且引用者会适当地更改。 HTTPS 调用接收 404 错误,而 HTTP 调用接收 JSON 数据。
我相信 Web 服务中可能缺少某些东西,允许调用在 HTTPS 下运行(尽管我想不出在这种情况下应该有什么重要的东西),或者 HTTPS 网站本身在它时配置错误被建立。任何帮助将不胜感激。
【问题讨论】:
标签: ajax web-services https