我正在尝试从我的站点执行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因为我无法控制服务器端。
答案 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实现。