我正在尝试从不在同一域中的网页获取HTML代码。 html文本被解析&总结了HTML代码所在页面上的食谱(食谱名称,主要成分,步骤号)。
然后,用户可以点击链接&转到域外的该网页查看配方。
我知道Same-Origin-Policy,但这是否适用于从国内域外的网页获取HTML代码?我想它与获取XML完全一样,所以这是合法的和允许不是吗?
我是否有办法从国内域名以外的域中获取HTML文本/代码?
使用Javascript& JQuery,其想法是限制服务器请求的数量和数量。通过让用户对每个食谱执行请求并进行存储。解析客户端的HTML。这会阻止服务器端瓶颈和也意味着我不必通过服务器&删除旧的过时食谱总结。
我愿意接受任何编程语言或API等的解决方案/建议。
答案 0 :(得分:9)
使用任何AJAX库无法完成您要做的事情。浏览器的跨域策略不允许您这样做。
但是你可以结合使用php(或任何其他服务器端语言)和AJAX来实现这一点。像这样创建一个php脚本:
<?php
$url=$_POST['url'];
if($url!="")
echo file_get_contents($url);
?>
让我们说脚本的名称是fetch.php
。
现在,您可以将jQuery代码中的AJAX调用抛出到此fetch.php
,它将为您提取HTML代码。
答案 1 :(得分:3)
不,这不适用于客户端JavaScript。出于安全原因,浏览器会阻止它。您需要对本地服务器端脚本(例如PHP)进行ajax调用,然后获取内容(例如,通过cURL)并返回所需的HTML。
答案 2 :(得分:2)
为了给你已经得到的答案添加一些内容,我可以告诉你html
并不是用来像“服务”一样传输数据的方式。为此,通过XML
或JSON
公开SOAP
或REST
。
在您的方案中,我能够考虑的最佳方法是牢记技术和法律方面,使用iframe
来显示外部内容并引用iframe内容的来源,包括像你一直在做的外部链接。
您仍然可以尝试使用服务器端方法来获取远程html,但不是一个干净的方法,这肯定不是一个好的做法,可能不合法。
如果内容的作者希望其可以在其网站之外重复使用,则他可以通过服务或RSS
/ Atom
Feed提供无格式内容来表达此意图。
答案 3 :(得分:1)
同样的起源适用。尝试此代码,您将面临安全错误
$.get("other web page site", {}, function(content){
$("#receipe").html(content)
}, "html")
顺便说一下,你更可能违反版权法,所以要小心; - )
答案 4 :(得分:0)
我不确定它是否算作纯粹的JavaScript解决方案,但是:http://developer.yahoo.com/yql/可以帮助您找到所需内容。