修改XMLHttpRequests以使它们跨域

时间:2011-04-22 09:14:12

标签: jquery cross-domain

我正在处理应用程序的代理。我需要将特定页面上的所有AJAX调用转换为跨域,以便我的代理可以完成这些ajax调用。

我正在研究用窗口绑定JQuery.beforeSend的可能性,并有三个问题:

  1. 如何实际添加dataType的额外参数:jsonp;到页面上出现的所有AJAX调用。

  2. 这会将函数与所有XMLHttpRequests绑定,还是仅通过jQuery $ .ajax,$ .get,$ .post等函数绑定函数

  3. 如果我添加dataType:jsonp;它只会将它添加到通过jQuery完成的调用或通过任何库完成的所有调用或来自浏览器的调用

  4. 有更好的方法吗?任何其他建议来解决这个问题。由于我不知道外部HTML,更改它通过AJAX调用的URL更加困难,因此通过我的代理域路由它不是我的首选方式。

    由于

2 个答案:

答案 0 :(得分:1)

  1. 您可以隐藏现有的jQuery方法......

    var jQueryAjax = $.ajax;
    
    $.ajax = function(settings) {
       settings.type = 'jsonp';
       jQueryAjax(settings);
    }
    

    认为这应该有效。

  2. ajax()是jQuery中AJAX请求的低级接口,但我不确定他们是否会调用它。 getJSON()似乎致电get()

  3. 添加jsonp仅在您使用的服务支持JSONP时才有用。

答案 1 :(得分:0)

  1. 将数据类型设置为jsonp(dataType:“jsonp”)
  2. 使用jsonp,您只能处理GET请求,请参阅3.
  3. 仅限于您​​将jsonp添加为数据类型
  4. 的调用