小编典典

JavaScript跨域调用:从HTTP到HTTPS的调用

ajax

我需要对同一域的安全(HTTPS)URL进行异步调用。

当前,该页面正在使用常规HTTP(非安全)。

换句话说:这是使用HTTPS在同一域中调用URL。

在将此调用切换到HTTPS之前,我结束了实现服务器端代理以允许跨域AJAX调用,但是现在我面临着相同的源策略,因为HTTP和HTTPS也被认为是不同的源。因此,该代理不可用。

简介:在这种情况下,如何进行跨域,异步POST请求?

各种说明:

  • 我无法接受任何建议使用JSONP的答案。异步调用必须使用POST动词。
  • 我正在使用最新版本的jQuery。答案可以基于该库,也可以基于任何其他解决此问题的方法。
  • 通过HTTPS访问整个页面不是解决方案。
  • 服务器平台是Microsoft .NET 4.0(ASP.NET 4.0)。
  • UDPATE :不能选择CORS。现代浏览器对此没有广泛的支持。

阅读 614

收藏
2020-07-26

共1个答案

小编典典

首先,我对@missingo和@PiTheNumber的两个问题都进行了+1。

花了很多小时后,我得出的结论是,我打算将整个页面切换到HTTPS。那是因为:

  • 大多数现代浏览器都支持CORS,但是从第8版开始的Internet Explorer具有专有的实现(XDomainRequest对象),该实现可能在某些计算机中被禁用(默认情况下,我的跨域请求在Internet安全区域中被禁用)。

    • Opera不支持CORS。第12版将支持该版本,但这不是一个选择,因为用户应首先采用此新版本,并且不会在2天之内。

    • 我需要进行跨域请求,因为Web客户端应用程序必须请求位于另一个域中的RESTful服务层。没门。

    • 将所有内容切换到HTTPS可使服务层代理方法再次起作用(这是预期的行为)。

无论如何,因为这两个答案都对我得出这个结论大有帮助。

更新

@Sam添加了可能对任何人都有趣的评论。关于如何在Internet Explorer
8和9中获得CORS(请参阅#7):http :
//blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-
restrictions-limitations-and-workarounds。
aspx

2020-07-26