我们可以使用跨域中的Jquery $ .ajax()调用通过https访问WCF服务吗?

时间:2011-12-28 05:18:14

标签: jquery ajax wcf https cross-domain

我已为这两个应用添加了SSL。

假设https:// www.a.comhttps:// www.b.comhttps:// www.a.com正在从https:// www.b.com$.ajax()来电访问 wcf 服务。 我也在使用 jsonp 来实现此功能。当这些应用程序不是 https 时,它可以正常工作。但是当我将其设为 https 时,$.ajax()调用失败了。它在此$.ajax()电话上的 firebug 中提供“Internel服务器错误”

我们可以在安全模式下做这样的事情吗?

5 个答案:

答案 0 :(得分:5)

建议1:

使用CORS(Cross Orignin resource sharing)

预检请求期间,

您应该看到以下两个标题:

  
      
  • 访问控制请求-方法

  •   
  • 访问控制请求报头

  •   

这些请求标头要求服务器提供实际请求的权限。

您的预检响应需要确认这些标题,以便实际请求正常工作

例如,假设浏览器使用以下标头发出请求:

  
      
  • 原产地:http://yourdomain.com

  •   
  • 访问控制请求方法:POST

  •   
  • Access-Control-Request-Headers:X-Custom-Header

  •   

然后,您的服务器应使用以下标头进行响应:

  
      
  • Access-Control-Allow-Origin:http://yourdomain.com

  •   
  • Access-Control-Allow-Methods:GET,POST

  •   
  • 接入控制允许接头:   X-定制报头

  •   

Reference

建议2:

使用JSON-P和中间页:

  • 创建一个中间页面,使http请求到https页面并返回JSON-P结果
  • 如果中间页面位于同一个域,则直接使用 else make 跨域ajax请求并使用 JSON-P

Reference

答案 1 :(得分:1)

通过加密(https)连接读取/写入JSON数据听起来好多了。让WCF在端点处理您想要的任何内容,但与简单的JSON消息进行通信。 IMHO ...

答案 2 :(得分:1)

我们可以通过跨域使用jquery ajax调用来访问https上的WCF服务,但是当引发此类调用时我们会收到安全警报。

根据Same-origin policy,如果它是相同的域和相同的协议,我们可以访问。

有关详细信息,请参阅Same-origin policy

答案 3 :(得分:0)

就jsonp请求而言,https vs http应该没什么特别之处。内部服务器错误通常表示Web服务器引发异常。什么是状态代码(500)?

如果它是500,我会看看你是否可以使用chrome的调试器或firebug识别请求中的任何差异。

答案 4 :(得分:0)

我只是在主机服务器上创建一个服务,接受来自客户端的请求。然后,该服务将发出跨域请求并将数据发送回客户端。这样你就不必改变任何配置。