服务器是否需要允许/配置CORS

时间:2016-04-05 09:39:27

标签: ajax asp.net-mvc cors

我正在尝试从我的站点执行AJAX请求,该请求部署在“HTTPS”协议上。但我要做的请求部署在'HTTP'协议上。 所以我收到以下错误:

  

此请求已被阻止;必须提供内容   HTTPS

我的要求如下:

 $.ajax({
         url: "http://testsite/service/process.php",        
         type: "POST",
         data: { service: '@service', id: '@id' }                    
        });
  

是否有任何方式/技巧可以绕过此错误/问题而无需更改   ServerSide上的任何内容(http://testsite/)或是否有必要   在服务器端启用/配置C.O.R.S因为我无法控制服务器端。

1 个答案:

答案 0 :(得分:1)

CORS的替代方案

如果您的Web应用程序必须在不支持CORS的浏览器中运行或与未启用CORS的服务器交互,则可以使用多种CORS替代方案来解决跨源通信限制。

JSONP。这是一种利用同源安全策略的HTML脚本元素异常的技术。脚本标记可以从不同的域加载JavaScript,并且可以将查询参数添加到脚本URI,以将信息传递给托管脚本的服务器,以获取您希望访问的资源。 JSONP服务器将返回在浏览器中评估的JavaScript,该浏览器调用页面上已经商定的JavaScript函数将服务器资源数据传递到您的页面。

OpenAjax Hub 。这是一个JavaScript Ajax库,允许在单个Web应用程序中集成多个客户端组件。只要受信任和不受信任的组件都包含OpenAjax Hub JavaScript库,它们就可以共存于同一页面中并相互通信。该框架提供了一个安全管理器,允许应用程序在组件消息传递上设置安全策略。 iframe用于将组件隔离到安全的沙箱中。

easyXDM。这是一个JavaScript库,允许通过iframe进行基于字符串的跨域通信。它与OpenAjax Hub使用相同的主体,但没有安全管理器组件。

Proxied iframe。这种自助技术涉及在您希望与之通信的域中包含iframe。这假设您可以在此其他域上托管页面。 iframe中运行的JavaScript充当包含您要访问的资源的服务器的rest代理。您的应用程序与其余代理之间的通信将使用发布消息进行。帖子消息是HTML5标准的一部分,但是对于不符合HTML5的浏览器也有一个jQuery实现。