修改XMLHttpRequests使其跨域
我正在为应用程序开发代理。我需要将特定页面上的所有 AJAX 调用转换为跨域,以便我的代理可以完成这些 ajax 调用。
我正在研究将 JQuery.beforeSend 与 window 绑定的可能性,并有三个问题:
如何实际添加 dataType: jsonp; 的额外参数?页面上出现的所有 AJAX 调用。
这会将函数与所有 XMLHttpRequest 绑定还是仅通过 jQuery $.ajax 、 $.get、$.post 等函数完成的请求
如果我添加 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:
How can I actually add extra parameter of dataType: jsonp; to all the AJAX calls that are present on the page.
Will this bind the function with all the XMLHttpRequests or only the requests done via jQuery $.ajax , $.get, $.post, etc functions
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以隐藏现有的 jQuery 方法...
我认为这应该有效。
ajax()
是 jQuery 中 AJAX 请求的低级接口,但我不确定他们是否调用它。getJSON()
似乎调用了get()
。仅当您使用的服务支持 JSONP 时,添加
jsonp
才有用。You could shadow the existing jQuery method...
I think this should work.
ajax()
is the low level interface for AJAX requests in jQuery, but I'm not sure if they call it.getJSON()
seems to callget()
.Adding
jsonp
will only be useful if the service you are using supports JSONP.