【发布时间】:2018-05-16 15:26:29
【问题描述】:
我正在尝试使用 php file_get_contents 获取特定网页 - 当我直接查看页面时没有问题,但是当尝试使用 php 获取它时,我得到“无法打开流:HTTP 请求失败!HTTP/1.1 403禁止”。我正在尝试从页面中提取一段数据。
$ft = file_get_contents('https://www.vesselfinder.com/vessels/CELEBRITY-MILLENNIUM-IMO-9189419-MMSI-249055000');
echo $ft;
我在这里阅读了有关使用 stream_context_create 的各个页面,主要是用户代理部分
$context = stream_context_create(
array(
"http" => array(
"header" => "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"
)
)
);
但没有任何效果,我现在收到 400 错误消息。不幸的是,我的服务器似乎没有配置为使用 cURL,所以 file_get_contents 似乎是我这样做的唯一方法。
【问题讨论】:
-
没有。它被称为Same-origin policy。
-
@icecub 但 CORS 仅 适用于从浏览器发出的 ajax 请求。 developer.mozilla.org/en-US/docs/Web/HTTP/CORS
-
@ADyson 这可能是真的。我在 Ajax 上工作了很多,所以公平地说,我从来没有意识到它只适用于它。也许我在这里错了。我也会犯错误。这就是我发表评论而不是回答的原因。
-
如果同源策略应用于 HTTP 请求,是不是意味着我们无法在浏览器上导航到该页面?
-
@Cyclonecode 这可能是问题所在,但我认为“大多数”有点主观。取决于他们的政策,以及它是作为 API 还是基于浏览器的 UI。如果它是基于浏览器的 UI 页面,那么通过 PHP 脚本访问它可能不是解决 OP 问题的好方法。
标签: php file-get-contents