4

我目前正在使用 jQM 开发移动 Web 应用程序。

尽管我在寻找我的问题的答案,但我找不到任何好的答案。

这是我的目标:

  1. 在另一个域中下载网页的特定元素。
  2. 通过对话框显示数据。

由于跨域问题,我坚持第一步。

有些人写过使用带有回调函数的 JSONP,但似乎该技术仅在处理 JSON 格式时才有效。

我还读到由于安全问题,JavaScript 不支持在另一个域中下载 html 页面。

他们是对的吗?

有没有办法通过 JavaScript 实现我的目标?

4

4 回答 4

10

这个问题有很多解决方法(JSONP、反向代理、'Access-Control-Allow-Origin'等),在一个非常广泛的线程中描述了 SO: 绕过同源策略的方法

于 2013-04-08T15:27:04.007 回答
5

最好的方法是使用本地代理。换句话说:在脚本 X 中执行请求服务器端,并从您的 javascript 调用此脚本 X。这样,您的“跨域”查询就会从服务器发生,并且对此没有任何限制。

于 2013-04-08T15:21:59.830 回答
4

这有两种可能。

首先,只有在外部服务器设置了 cors 标头时:http://enable-cors.org/server_apache.html。然后就可以正常加载了。如果未设置该标头,则无法直接进行。

其次,您可以将服务器端用作代理。这仅在您对静态资源执行 GET 请求时才真正有用。否则服务器上的负载会非常高。如果您没有要使用的服务器,则可以使用 YQL,但这对于生产用途来说是粗略的。http://davescoolblog.blogspot.com/2012/02/client-side-cross-domain-data-yql-hack.html

于 2013-04-08T15:22:56.783 回答
2

JSONP 允许跨域共享任何 Javascript 对象。字符串是 Javascript 对象,在您的情况下,您可以为元素提供标记以包含为字符串并使用标准 Javascript 技术来处理它。

如果您愿意,您还可以使用跨域资源共享,它的支持较少,但不会对 JSONP 性能造成轻微影响(尽管它具有其他性能缺陷,例如需要对非 GET 进行多次请求)。

于 2013-04-08T15:21:59.747 回答