我的一位同事遇到了对.NET WebService的AJAX调用问题。该调用在HTTP下工作,但同样的调用在HTTPS下有问题。 Web服务是在IIS 4.0中使用C#在IIS 7服务器上编写的。
安全网站位于https://sql.data-rx.com/grouppharmdrugsearch/。 http://sql.data-rx.com/grouppharmdrugsearch/处有一个不安全的版本。页面本身没有任何敏感信息。它嵌入(我相信框架)在客户端的网站上使用HTTPS,我们的页面需要使用HTTPS,因此浏览器不会给出混合的安全/不安全元素。
要测试网站上的问题,您首先必须在第二个文本框中输入邮政编码(我一直使用90210进行测试),然后您可以将药物的前几个字母输入第三个文本框。在等待一秒左右的额外信件之后,页面调用web服务来填充从提供的字母开始的可能药物选择的下拉列表。安全的webservice调用是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网站本身在配置错误时被建立。任何帮助将不胜感激。