【发布时间】:2012-03-14 19:24:52
【问题描述】:
在我们的web应用程序中,我们做了一些ajax请求,所以我们可能会遇到跨域问题。
由于我们使用 ajax 来请求返回 xml 文档的标准 Web 服务。
所以我们不能使用jsonp。
我们也不想使用代理。由于服务器可能使用反向代理,在这种情况下代理可能不起作用。
那我想知道有没有其他方法可以解决这个跨域问题?
这里提到的服务是标准的 ogc web 服务。
更新2: 我们避免使用代理,因为我们在服务器使用反向代理时遇到了问题。
例如暴露的服务器地址是'http://100.1.1.1'。
我提出一个ajax请求:'http://100.1.1.1/proxy.ashx?url=http://100.2.2.2/xx.img'。
然后服务器'100.1.1.1'将此请求转发到IP为'192.168.1.1'的本地网络,然后proxy.ashx现在无法访问互联网'100.2.2.2'。所以 ... :(。
【问题讨论】:
-
我还是不明白为什么你不能使用JSONP。
-
如果我请求
http://server/service?xx=xx然后我得到一个 xml 文档。<xml ../><xxx><xxxx/>所以我不能在回调中包装xml文档。 -
您对服务器有控制权吗?如果是,你可以让它输出 JSONP(与它的名字相反,响应根本不需要包含 JSON)。
-
@hguser:您的 JSONP 请求可以请求
http://server/jsonp?service=xx&xx,它将 XML 作为字符串参数输出到回调 (foo("<xml>...</xml")),然后您可以 parse in JavaScript,或者您可以检测&callback参数中的http://server/service?xx=xx并做同样的事情。 -
@Felix Kling,@Matt:我们无法控制服务器,服务器提供的服务有其定义响应结果的标准。(xml 文档而不是纯文本)。查看我的更新。