通过代理服务器发出jQuery.ajax请求

时间:2014-05-03 19:29:31

标签: javascript jquery ajax proxy-server

我正在撰写Chrome扩展程序。如果您通过https在通过https提供的页面中对常规http页面发出jQuery.ajax请求,则Chrome会阻止该请求。我想知道我是否可以使用安全代理获取所请求的页面。

那么,是否可以将通用代理服务器用于某些jQuery.ajax请求?如果是这样,怎么样?请注意,更改浏览器的代理设置不是一种选择。

2 个答案:

答案 0 :(得分:0)

是的,确实如此。

我们在工作中所做的是实现一个完全相同的代理:

  1. 它从同一个来源接受Web服务调用,然后
  2. 在服务器端,将它们映射到另一个来源的Web服务,
  3. 将它们发送到那里,
  4. 收到结果和
  5. 将它们传递给呼叫者。
  6. 这样,您既可以遵守相同的原始政策,也可以与其他来源合作。但是,您始终需要服务器端代理功能。

    例如,请查看https://developer.yahoo.com/javascript/howto-proxy.html。他们为Yahoo Web服务提供PHP实现。

答案 1 :(得分:-1)

[还有一年......]如果我理解你的问题,你想根据你当前所在的网页改变你的AJAX请求。 jQuery提供了许多AJAX related方法,可以帮助您解决这个问题。

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

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

为了增加一点点,您还可以使用global AJAX event handlers中的任何一个来监控您的请求。例如,查看是否有任何请求失败:

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