2011-04-22 67 views
0

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

我一直在寻找到与窗口结合JQuery.beforeSend可能性,有三个问题:

  1. 如何其实我可以添加数据类型的附加参数:JSONP;到页面上的所有AJAX调用。

  2. 这会不会绑定功能与所有的XMLHttpRequest的或仅通过jQuery $阿贾克斯,和$ .get,$ .post的做了要求,等功能

  3. 如果我添加数据类型:JSONP;它只会将此添加到通过jQuery完成的调用或通过任何库或源自浏览器的所有调用

有没有更好的方法来做到这一点。任何其他建议来解决这个问题。由于我不知道外部HTML,因此通过AJAX调用的URL更加困难,因此通过我的代理域进行路由并不是我的首选方式。

感谢

回答

1
  1. 你可以阴影现有的jQuery的方法...

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

    认为这应该工作。

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

  3. 只有当您使用的服务支持JSONP时,才会有用jsonp

+0

你好亚历克斯, 谢谢,如果我添加一个额外的头(起源:)所有请求如何。如果我添加请求所在页面的域,会有帮助吗? – 2011-04-22 09:24:35

+0

@Sparsh我不确定那会工作。 – alex 2011-04-22 09:25:55

0
  1. 设定的数据类型,以JSONP(数据类型: “JSONP”)
  2. 随着JSONP只能处理GET请求,请参见3.
  3. 只给您添加JSONP作为数据类型
  4. 通话
+0

Hello Ivo,谢谢,如果我为所有请求添加额外的标题(来源:),那么该如何?如果我添加请求所在的页面的域作为Origin头部,那会有帮助吗? – 2011-04-22 09:25:16