是否有 JavaScript 方法来执行 file_get_contents()?

IT技术 php javascript
2021-03-19 08:00:07

这是PHP 文档

如果我找不到纯粹的客户端方式来执行此操作,我将在 Ajax 调用中使用它的方法如下。

$homepage = file_get_contents('http://www.example.com/');
echo $homepage;

有没有办法代替这个客户端,所以我不必将字符串放在 ajax 上?

6个回答

你可以

JS代码:

$.post('phppage.php', { url: url }, function(data) {
    document.getElementById('somediv').innerHTML = data;        
});

PHP代码:

$url = $_POST['url'];
echo file_get_contents($url);

这会让你得到 url 的内容。

JavaScript 无法从页面上抓取数据。它可以调用本地 PHP 脚本,然后代表它获取数据,但是 JavaScript(在浏览器中)不能这样做。

$.post("/localScript.php", { srcToGet: 'http://example.com' }, function(data){
  /* From within here, data is whatever your local script sent back to us */
});

您可以使用 JSONP 和跨源资源共享等选项,但这两者都需要设置另一端,因此您不能只选择一个域并开始触发数据请求。

延伸阅读:同源政策

这个函数将文件作为字符串返回,就像 PHP 一样file_get_contents()

function file_get_contents(uri, callback) {
    fetch(uri).then(res => res.text()).then(text => callback(text));
}

但是与 PHP 不同的是,JavaScript 将继续执行下一条语句,而不是等待数据返回。

根据您链接的域/URL 与您的用户名相同或包含您的用户名,您似乎已链接到您自己的站点/您所属的站点。如果您这样做,您必须披露这是您的网站如果您不透露隶属关系,则会被视为垃圾邮件。请参阅:什么表示“良好”的自我宣传?以及自我推销的帮助中心披露必须是明确的,但不需要是正式的。如果是您自己的个人内容,则可以是“在我的网站上……”、“在我的博客上……”等。
2021-05-07 08:00:07

现在是 2020 年和一些现代方法;

async function file_get_contents(uri, callback) {
    let res = await fetch(uri),
        ret = await res.text(); 
    return callback ? callback(ret) : ret; // a Promise() actually.
}

file_get_contents("https://httpbin.org/get", console.log);
// or
file_get_contents("https://httpbin.org/get").then(ret => console.log(ret));
这是正确的并且很好用,感谢 es6 示例。
2021-04-21 08:00:07
您如何将值放入变量中以供使用?
2021-05-19 08:00:07

不是一般意义上的。跨域限制不允许 Javascript 代码执行此操作。

如果目标站点设置了CORS(跨域资源共享),则可以使用 XMLHttpRequest 加载文件。大多数站点都没有,因为出于安全原因,默认情况下它是关闭的,而且很少需要。

如果您只需要包含一个 HTML 页面,您可以将其粘贴在一个<iframe>元素中。不过,这会受到一些布局问题的影响(页面以固定大小的元素结束)。

嗯...它需要修改...因为我现在占用了更多的网络资源...添加另一个跃点...但仍然获得我打算获得的数据....保持安全...杀死低效率。
2021-04-21 08:00:07
@ CS_2013 不,如果iframe不是来自您域的文档,则不会。
2021-04-26 08:00:07
不。框架的内容几乎完全禁止。
2021-05-01 08:00:07
不可以。出于非常好的安全原因,跨域资源共享的设置方式是这样的。阅读 Michal Zalewski 的优秀著作“The Tangled Web: A Guide to Securing Modern Web Applications”了解详细信息。
2021-05-12 08:00:07
...我可以对 iframe 进行任何分析吗...也许可以以某种方式获取标题?
2021-05-20 08:00:07