1

我使用调用 HTTP 页面的 Visual Studio(asmx 页面)创建了一个 Web 服务:

WebRequest request = WebRequest.Create("http://ws.geonames.org/countryCode?lat=" + lat + "&lng="+lng);

此服务通过 HTTPS 提供:

    https://mydevdomain.com/geonames/Service1.asmx/getGeoname

现在,当我https://mydevdomain.com/page.html用这个 jQuery 代码调用这个服务时……</p>

  var request= $.ajax({
      type: "POST",
      url: "https://mydevdomain.com/geonames/Service1.asmx/getGeoname",
      data: "{ 'lat':'"+coordinatesMap[f][1]+"', lng:'"+ coordinatesMap[f][2]+"'}",
      contentType: "application/json; charset=utf-8",
      dataType: "json"
  });

…我在资源管理器上有一个经典警报,告诉我有非安全内容!为什么?jQuery 怎么可能知道服务正在调用非安全页面?

PS 我做这项服务是因为我想避开警报页面。

4

1 回答 1

0

不确定这是否会有所帮助,但它解决了我在该警报中遇到的类似问题。

我使用ServerCertificateValidationCallback来修复。并不是说这很重要,但我的课程是一个 ASMX C# WebService(更多内容见下文)

下面的例子:

//Force Trust with server
ServicePointManager.ServerCertificateValidationCallback = delegate(
  Object obj, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) {return (true); };

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://999.999.99/PI/services/UCP");
request.Headers.Add("SOAPAction", "");
request.ContentType = "text/xml;charset=\"utf-8\"";
request.Accept = "text/xml";
request.Method = "POST";

更多代码...

using System;
using System.Collections.Specialized;
using System.Net;
using System.Net.Security;
using System.IO;
using System.Xml;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;

[WebService]
public class UCPSvc : WebService {

    [WebMethod (Description="Proxy for ACS UCP WebService")]
    public XmlDocument Proxy()
    {
        //...
    }
}
于 2012-06-27T17:25:11.887 回答