角度服务调用错误:net :: ERR_INSECURE_RESPONSE

时间:2014-11-04 11:41:00

标签: angularjs wcf iis ssl cross-domain

当我的角色脚本试图访问我的WCF服务方法时,我收到错误net::ERR_INSECURE_RESPONSE。要使其工作,访问该网站的每个浏览器都需要找到ajax调用中使用的URL并手动将证书添加到其可信站点。如果没有购买真正的证书,是否无法自动完成此操作?为了解决这个问题,我尝试了三件事:

  1. 在每个人的服务开放请求上设置crossdomain.xml
  2. <?xml version="1.0" ?>
    <cross-domain-policy>
      <site-control permitted-cross-domain-policies="master-only"/>
      <allow-access-from domain="*"/>
      <allow-http-request-headers-from domain="*" headers="*"/>
    </cross-domain-policy>
    

    仍有同样的错误net::ERR_INSECURE_RESPONSE

    1. 在angular
    2. 的请求中发送了以下标头
      Access-Control-Allow-Origin:*
      Access-Control-Allow-Methods:GET, POST
      Access-Control-Allow-Headers: Content-Type, Accept,TOKEN
      

      仍有同样的错误net::ERR_INSECURE_RESPONSE

      1. 尽我所能设置自定义自签名证书,但在服务器上的IIS中设置绑定时出现此错误:
      2.   

        证书链中的一个或多个中间证书是   失踪。要解决此问题,请确保所有中间件   证书已安装

        我已经在Windows Server 2012上部署了WCF 4.0 REST服务。我认为我需要得到第3点才能使用它。我需要帮助来理解如何解决第3点提到的错误。

        The Website url: https://www.mydomain.com/Website/  
        The Service url: https://www.mydomain.com/Webservice/
        

        任何帮助表示感谢。

1 个答案:

答案 0 :(得分:0)

我已经在我们需要创建自签名证书进行测试的环境中工作了一段时间。我们使用java keytool来创建证书。使用此链接To Use keytool to Create a Server Certificate和Google了解更多信息以创建自己的证书。该过程非常复杂(虽然比您提供的链接更简单),但关键点是在创建证书时使用您的机器名称,并确保您用于测试的URL使用此名称。

您可能还需要将计算机名称及其IP添加到主机文件中。这很重要,以便通过证书上的名称解析URL。您需要弄清楚如何将证书添加到您的服务器。我们使用Tomcat,查看此/ssl-howt,或者对于节点,请尝试此create a trusted self-signed SSL cert for localhost (for use with Express/Node)。 (遗憾的是我从未使用过IIS)

最后要检查您的证书是否有效,您必须将服务器配置为以ssl模式运行,并且您应该能够在尝试将这些服务用作网页中的服务之前进行访问。

  

https://yourmachinemane:443/suburls