我们有一个 ASP.Net 应用程序托管在我们的网络上并向特定客户端公开。该客户希望能够将数据从他们自己的服务器导入到我们的应用程序中。数据通过 HTTP 请求检索并采用 CSV 格式。问题是他们不想将他们的服务器暴露给我们的网络,并要求在客户端完成导入(所有客户端都来自与他们的服务器相同的网络)。
那么,需要做的是:
- 他们从我们的服务器请求导入页面
- 页面上的客户端脚本向其服务器发出请求以获取 CSV 格式的数据
- 数据被发送回我们的应用程序
当两台服务器位于同一域时,这不是一个挑战:一个简单的隐藏 iframe 或类似的东西就可以解决问题,但我得到的是跨域“访问被拒绝”错误。他们还拒绝更改数据格式以返回 JSON 或 XML 格式的数据。
到目前为止,我尝试并学到的是:
- 隐藏 iframe -- “访问被拒绝”
- XMLHttpRequest -- 行为取决于浏览器的安全设置:可能有效,可能在向用户发出安全警告时有效,或者可能根本无效
- 动态脚本标签——如果它们能够返回 JSON 格式的数据,它们就会起作用
- IE 客户端数据绑定(bind)——同样的“拒绝访问”错误
在放弃并说如果不将他们的服务器暴露给我们的应用程序、更改他们的数据格式或更改他们的浏览器安全设置是不可能的之前,我还有什么可以尝试的吗? (顺便说一句,DNS 技巧不是一种选择)。
最佳答案
JSONP如果他们可以以 JSON 格式提供数据,这可能就是您的答案。除此之外,你总会遇到Same Origin Policy。跨域调用的问题。您是否考虑过进行服务器端调用以向他们的服务器发出 HTTP 请求?
关于javascript - JavaScript 中的跨域数据访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1244182/