jQuery.通过代理服务器的Ajax请求



我正在写一个Chrome扩展。如果你制作jQuery。通过https服务的页面内的常规http页面的ajax请求,然后请求被Chrome阻止。我想知道我是否可以使用安全代理获取所请求的页面。

那么,有可能为一些jQuery使用通用代理服务器吗?ajax请求吗?如果有,怎么做?注意,不能更改浏览器的代理设置。

[一年过去了…]如果我正确理解你的问题,你想改变你的AJAX请求取决于你目前在的网页。jQuery提供了许多与AJAX相关的方法,这些方法可能会帮助您解决这个问题。

我的建议是使用jQuery.ajaxPrefilter并调整您的查询以使用代理而不是原始主机。文档中的一个示例:

$.ajaxPrefilter(function( options ) {
  if ( options.crossDomain ) {
    options.url = "http://example.com/proxy/" + encodeURIComponent( options.url );
    options.crossDomain = false;
  }
});

为了增加一点趣味,您还可以使用任何全局AJAX事件处理程序来监视您的请求。例如,查看是否有任何请求失败:

$( document ).ajaxError(function() {
 console.log("Somethin' went wrawng!");
});

是的。

我们在工作中所做的就是实现一个代理,它就是这样做的:

  1. 它接受来自同一来源的web服务调用,然后,
  2. 服务器端的
  3. ,将它们映射到另一个来源的web服务
  4. 将它们送到那里,
  5. 接收结果和
  6. 将它们传递回调用者。

这样,您既可以遵守相同的起源策略,又可以与其他起源一起工作。但是,您总是需要服务器端代理功能。

您将需要一个外部库来使用JQuery通过HTTP代理执行Ajax请求。开箱即用的JQuery没有这个功能。这样的一个例子是https://www.AjaxProxy.com,它可以与您的查询一起使用,如下所示:

ajaxProxy.proxy.url = "http://your proxy";
ajaxProxy.proxy.credentials.username = "proxy username";
ajaxProxy.proxy.credentials.password = "proxy password";
$.ajax({
    type: "GET",
    url: "https://ICANHAZIP.COM",
    headers: ajaxProxy.proxyHeaders(),
    dataType: "text"
}).done (function (data) {
    console.log(data);
});

相关内容

  • 没有找到相关文章

最新更新