【发布时间】:2011-08-23 07:13:44
【问题描述】:
在我的 javacript 函数中,我称之为 ajax。它工作正常,但只有当我从firebird 服务器访问网页时。我的testing 服务器上有相同的代码。 ajax 要求下载一些文件,但只有 firebird 服务器向我们的客户端注册了它的 ip,以便能够在那里进行 scp。如果我从测试服务器访问 php 文件,我也需要这样做。所有服务器都在 Intranet 内。
- 是否可以使用 dataType
text来做到这一点? - 我需要在服务器端进行任何更改吗?
ajax 调用:
url = "https://firebird"+path+"/tools.php?";
jQuery.ajax({
type: 'get',
dataType: 'text',
url: url,
data: {database: database_name, what: 'download', files: files, t: Math.random() },
success: function(data, textStatus){
document.getElementById("downloading").innerHTML+=data;
}
});
更新 1
我的小型 Web 应用程序可以恢复数据库,因此我可以对它们进行测试。现在我想增强它,这样我就可以连接到我们的客户并下载特定的备份。我们的客户只允许firebird 服务器连接到他们的网络。但我有自己的服务器专用于testing。所以每次我想下载一个数据库我都需要连接firebird。我的 Web 应用程序的源和包含所有备份的文件夹都安装在两个服务器 firebird 和 testing 上的相同位置。现在我的解决方案(用于下载)有效,但只能来自 firebird。我基本上只工作testing 服务器。
更新 2
我进行了两次 ajax 调用。一种是纯 jQuery 调用(我想我可以对这个应用任何解决方案),另一种是来自 jsTree 的 ajax 调用。我为那个创建了new question。在我看来,I have to 选择 @zzzz 的选项 b)。
【问题讨论】:
-
唯一可以进行的跨域调用(没有服务器端代理)是
jsonp调用。text将不起作用。我不确定我是否正确理解了 SCP 部分。你能详细说明一下吗? -
@Mrchief :请参阅更新 1
-
@Malvolio:除了情节剧,有什么问题吗? @William Niu` 重申了我的想法(仔细看看他回答的第一行)。他还提到了 CORS,这就是为什么他的答案是我的评论。
-
@Mrchief -- 怎么了?你写“你可以做的唯一类型的跨域调用(没有服务器端代理)是 jsonp 调用”。事实并非如此。 CORS 也是一种解决方案(在我谦虚但完全准确的意见中,这是一种优越的解决方案)并且不需要服务器端代理。 JSONP 的唯一优势是它可以在侏罗纪浏览器中运行,因此如果您需要支持 Amish 或 Colonial Williamsburg 之类的......
-
@Malvolio:这并不完全准确。 CORS 在 Opera 和 IE 8 中具有部分支持,并且完全使用不同的实现 (
XDomainRequest)。不要仅仅因为您的客户没有抱怨,就认为 CORS 的一切都是完美的。不管你信不信,世界上很大一部分人仍在使用侏罗纪浏览器。撇开事实不谈,重点是,您通常会在完整的答案中提及这类事情,而不是在评论中。
标签: javascript ajax jquery cross-domain