繁体   English   中英

PHP-当使用simplexml_load_file从URL加载XML文件时,是否设置引荐来源网址?

[英]PHP - Anyway of setting a referrer when using simplexml_load_file to load an XML file from a URL?

Vimeo.com允许将视频嵌入到特定域。 但是,当嵌入视频时,我有一个脚本可以查询Vimeo以获得有关视频的详细信息。 该请求是通过PHP的simplexml_load_file()函数发出的,目标URL是Vimeo视频URL。 由于引荐来源网址字段为空白,但是Vimeo不允许访问视频,并且脚本无法获取任何视频详细信息。

不幸的是,Vimeo不允许将IP地址列入白名单,围绕此隐私设置的唯一方法是设置引荐来源网址,以使其看起来像是来自尝试在我的站点上观看视频的浏览器发出的请求。

我需要知道如何设置引荐来源网址-我什么也没看到-希望我错过了一些东西。

具体的行是:

  $sxml = simplexml_load_file($target_url);

您可以使用curl:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $target_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, 'http://www.example.com/1');
$xml = curl_exec($ch);

$sxml = simplexml_load_string($xml);

是的你可以。 您可以通过在该函数的所谓流上下文中设置标头字段,来设置所有要包括对simplexml_load_file引荐来源网址的标头。

这是通过libxml_set_streams_context完成的。

代码示例(pinback不起作用,它仅显示加载XML以及如何设置标头):

$options = [
    "http" => [
        "header"        => "Accept-language: en\r\n" .
                           "Referer: http://www.example.com\r\n",
        "ignore_errors" => true,
    ]
];
$context = stream_context_create($options);
libxml_set_streams_context($context);

$url = "http://vimeo.com/_pingback";

$sxl = simplexml_load_file($url);
$sxl->asXML("php://output");

相关问题:

  • simplexml_load_file问题 -那里的答案显示了如何将流上下文与file_get_contents一起使用,然后将HTTP响应正文传递给simplexml_load_string

我知道您的问题专门关于设置引荐来源网址,但是您的原始想法存在一些问题。

Vimeo不支持您访问视频元数据的方式,并且将来会中断而不会发出任何高级警告。

Vimeo API是检索视频元数据的唯一受支持的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM