修改XMLHttpRequests使其跨域

发布于 2024-11-02 20:25:06 字数 486 浏览 2 评论 0原文

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

我正在研究将 JQuery.beforeSend 与 window 绑定的可能性,并有三个问题:

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

  2. 这会将函数与所有 XMLHttpRequest 绑定还是仅通过 jQuery $.ajax 、 $.get、$.post 等函数完成的请求

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

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

谢谢

I am working on a proxy for an application. I need to convert all the AJAX calls on a particular page to be cross domain so that my proxy can complete those ajax calls.

I was looking into possibility of binding JQuery.beforeSend with window and have three questions:

  1. How can I actually add extra parameter of dataType: jsonp; to all the AJAX calls that are present on the page.

  2. Will this bind the function with all the XMLHttpRequests or only the requests done via jQuery $.ajax , $.get, $.post, etc functions

  3. If I add dataType: jsonp; will it only add this to calls done via jQuery or all the calls done via any library or originating from browser

Is there a better way to do it. Any other recommendations to over come this problem. Since I wont be knowing the external HTML, changing the URL it calls via AJAX is more harder and hence routing it via my proxy domain is not a preferred way in my case.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

怎樣才叫好 2024-11-09 20:25:06
  1. 您可以隐藏现有的 jQuery 方法...

    var jQueryAjax = $.ajax;
    
    $.ajax = 函数(设置) {
       设置.type = 'jsonp';
       jQueryAjax(设置);
    }
    

    认为这应该有效。

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

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

  1. You could shadow the existing jQuery method...

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

    I think this should work.

  2. ajax() is the low level interface for AJAX requests in jQuery, but I'm not sure if they call it. getJSON() seems to call get().

  3. Adding jsonp will only be useful if the service you are using supports JSONP.

枕梦 2024-11-09 20:25:06
  1. 将数据类型设置为 jsonp ( dataType: "jsonp")
  2. 使用 jsonp,您只能处理 GET 请求,请参阅 3。
  3. 仅适用于您添加 jsonp 作为数据类型的调用
  1. set the datatype to jsonp ( dataType: "jsonp")
  2. With jsonp you can only handle GET request, see 3.
  3. Only to the call where you added jsonp as datatype
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文