我想知道是否有一个 JavaScript 库可以覆盖XMLHttpRequest
并允许透明地处理所有跨域请求,并通过我的同源服务器端代理无缝转发它们。
我想要的是有一个通用的解决方案,可以与any用于发出跨域请求的 JavaScript 库(例如,使用跨域jQuery.ajax()
).
使用这样的库有什么缺点吗(安全问题、HTTPS 访问等)?
Update:
如果这样的库已经由某人创建,那么我只是不想重新发明轮子并再次处理所有极端情况。
如果您只需要将每个请求重定向到特定代理,您可以简单地自己编写,如下所示
XMLHttpRequest.prototype.oldOpen = XMLHttpRequest.prototype.open;
var newOpen = function(args) {
//overwrite arguments changing the original url to the proxy one,
//and add a parameter/header to send the original url to the proxy
this.oldOpen(args);
}
XMLHttpRequest.prototype.open = newOpen;
由于代理位于同一个域中(如果您想允许 x 域代理请求,只需添加 Access-Control-Allow-Origin 标头),因此不会发送任何远程域的 cookie(您不会拥有无论如何,因为 x 域 cookie 被阻止 - 只要您不输入带有标题 Access-Control-Allow-Credentials 的字段)。
一些安全隐患相当明显:
- 您正在代理请求,因此代理本身可以访问所有内容,无论加密如何
- 将要求代理进行 HTTPS 处理(如果远程 URL 是安全的),并且客户端将无法(或者,另一方面,如果要求代理,则不需要)直接验证服务器证书
更复杂的(同一域,完全支持 cookie)代理实现甚至可以为跨域请求重写标头提供基本的会话处理:
- 客户要求www.remotedomain.com/querystring from www.mydomain.com没有cookies
- 请求被重写为proxy.mydomain.com/www.remotedomain.com/querystring
-
代理发出请求www.remotedomain.com/querystring它以标头响应
设置 Cookie:名称=值;路径=/;截止日期:2012 年 12 月 31 日星期一 23:59:59 GMT
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)