Phonegap解析外部HTML

3

我正在编写一个PhoneGap应用程序,其中包含导航的HTML和Javascript,它应该从Web加载内容。

我无法直接控制内容服务器,因此无法在那里进行任何更改。

我想要在我的应用程序中获取的内容基于普通的HTML网站,所以我想要获取例如div中的文本等内容。

到目前为止我做了什么:

<script type="text/javascript">
  var url = "http://example.org/"
  updateGadget();

  inervalID = setInterval("updateGadget();", 60 * 1000);

  function updateGadget() {
    $(document).ready(function () {
        $.ajax(url, {}, function (response, status, xml) {
            console.log(response);
        });
    });
  }
</script>

问题在于它无法工作,没有显示任何内容。
开发时使用的是Web服务器而不是直接使用PhoneGap。当我在Google Chrome中打开网站时,会显示错误:
XMLHttpRequest cannot load http://example.org Origin http://example.org is not allowed by Access-Control-Allow-Origin.

在控制台中。

我发现应该使用这个标题:

header('Access-Control-Allow-Origin: *');

如果我把它放在我的HTML(PHP)文件的顶部,它什么也不做,而且在服务器上解析时我不能放它。问题出在哪里?如何解决?还是有更好的方法吗?如果可能的话,我想直接在PhoneGap应用程序中完成,而不需要第二个服务器后端。

1
你必须在你的 PhoneGap 应用程序中 将你使用的所有域名加入白名单 - apsillers
@apsillers,目前我正在运行网站和Web服务器进行测试,而不是在PhoneGap上。那么有没有办法可以做到呢? - user2436057
1
提供该页面的网站必须提供Access-Control-Allow-Origin: *。这是服务器表示“是的,我将允许浏览器跨域使用此页面”的一种方式。如果您无法控制该网站,则无法确定浏览器是否可以跨域使用它。也许您可以尝试使用像http://whateverorigin.org/这样的代理,或者[禁用浏览器对同源策略的遵循](https://dev59.com/QnA75IYBdhLWcg3wy8Ui)(但请注意,这应该仅在测试期间进行 - 在正常浏览期间禁用此功能是不安全的)。 - apsillers
我同意apsillers的观点。此外,使用服务器端脚本(例如php)可以让您缓存(例如APC)已解析的内容并提高响应时间。 - Martin
查看你得到的错误代码...使用 $.ajax({url: 'http://example.org/', data: myData, type: 'GET', dataType: 'jsonp', //无论你的数据类型是什么 success: function() { alert("成功"); }, error: function(jqXHR, textStatus, errorThrown) { alert('失败!' + textStatus); }}); - VJS
1个回答

1
这个stackoverflow问题有一个解决方案适用于你。
基本思路是在http://whateverorigin.org/get?url=webpage-you-wish-to-scrap.com发送$.get请求。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接