我为两个应用程序都添加了SSL。
假设https:// www.a.com和https:// www.b.com。
https:// www.a.com正在通过$.ajax()调用从https:// www.b.com访问wcf服务。
我也在此功能使用jsonp。 如果这些应用程序不是https,则可以正常工作。 但是$.ajax()调用在我设为https时失败。 在此$.ajax()调用中,它将在Firebug中给出"内部服务器错误"。
我们可以在安全模式下这样做吗?
您在服务器端看到的异常是什么?
建议1:
使用CORS(跨Orignin资源共享)
在预检请求期间,
您应该看到以下两个标题:
Access-Control-Request-Method
Access-Control-Request-Headers
这些请求标头向服务器询问发出实际请求的权限。
您的飞行前响应需要确认这些标头,才能使实际请求生效。
例如,假设浏览器发出带有以下标头的请求:
Origin: http://yourdomain.com
Access-Control-Request-Method: POST
Access-Control-Request-Headers: X-Custom-Header
然后,您的服务器应使用以下标头进行响应:
Access-Control-Allow-Origin: http://yourdomain.com
Access-Control-Allow-Methods: GET, POST
Access-Control-Allow-Headers:
X-Custom-Header
参考
建议2:
使用JSON-P和中间页:
创建一个中间页面,该页面使http请求进入https页面并返回JSON-P结果
如果中间页面在同一域中,则直接使用它,否则发出跨域ajax请求并使用JSON-P
参考
我们可以使用跨域的jquery ajax调用通过https访问WCF服务,但是当引发此类调用时,我们会收到安全警报。
根据相同来源策略,如果它是相同的域和相同的协议,我们可以访问。
有关详细信息,请参见同源政策
尝试将CORS添加到主机服务器,然后应该可以正常使用
大多数现代浏览器都支持CORS(跨源资源共享),因此您可以明确地尝试一下。简单来说,您的服务器必须重新运行以重新放置标头Access-Control-Allow-Origin:https:// www.a .com要了解更多信息,请访问en.wikipedia.org/wiki/Cross-origin_resource_sharing
听起来,如果仅通过加密(https)连接读取/写入JSON数据,您的需求就会大大提高。让WCF处理端点处的任何内容,但与简单的JSON消息进行通信。恕我直言...
我只是在主机服务器上创建一个服务,接受来自客户端的请求。然后,该服务将发出跨域请求,并将数据发送回客户端。这样,您无需更改任何配置。
就jsonp请求而言,https vs http应该没有什么特别的。内部服务器错误通常表示Web服务器引发了异常。什么是状态码(500)?
如果是500,我将查看您是否可以使用chrome的调试器或firebug识别请求中的任何差异。