【问题标题】:Process cross domain xml处理跨域xml
【发布时间】:2012-06-19 13:34:02
【问题描述】:

在一个使用 jsp 的 web 项目中,我有以下要求

将文件(例如图像)上传到不同的域,该域会返回一个 xml,其中包含上传文件的详细信息(例如:上传图像的路径等)。

如何捕获此 xml 以将详细信息保存在 db 中?

我无法进行正常的 html 表单提交,因为在那之后我失去了控制。所以我尝试通过将表单目标设置为 iframe 来实现这一点。但我无法处理 iframe 的内容?

有什么建议可以做到这一点吗?

我可以用 yql 处理吗?

【问题讨论】:

    标签: javascript jquery jsp cross-domain yql


    【解决方案1】:

    是的,您可以使用 YQL 执行此操作。不过这并不容易,您需要设置自己的 YQL 表。

    每个 YQL 表都是一个 XML 文件,描述如何对数据进行操作。 YQL XML 规范允许您定义一个<execute> 元素,您可以将其用于write JavaScript code that does almost anything

    在这个<execute> 块内,您可以使用y.rest 对象在其他地方发布数据。

    您可能必须使用 base64 对文件进行编码才能使用 YQL 语法实际发布数据,例如 INSERT INTO mywebsite.files (name, data) VALUES ('foo.png', 'KBB987987JJBHBGV==')(第二个参数是一个说明性的 base64 编码文件)。

    【讨论】:

      【解决方案2】:

      假设您将文件提交到的服务器不受您的控制(因此您不能使用 CORS),您可以通过自己的服务器代理请求。

      你不能使用 YQL,因为你不能用它发出 post 请求。

      【讨论】:

      • 感谢您的回复。我得到响应 xml 作为 iframe 内容。我可以使用 yql 处理这个 xml 对象吗?
      • 不,这就是我说“你不能使用 YQL”的原因。 YQL 通过发出 HTTP 请求而不是违反同源策略来获取数据。
      • 好的。你能告诉我如何使用代理吗?你有什么例子吗?
      • 您选择一种服务器端编程语言。你可以找到一个库,它可以让你发出 HTTP 请求。你向你想要的资源发出请求,然后输出它。
      • 我尝试使用 jsp,但我得到 java.net.ConnectException: Connection timed out
      猜你喜欢
      • 2011-05-28
      • 1970-01-01
      • 2011-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-17
      • 2017-01-30
      • 2011-11-26
      相关资源
      最近更新 更多