Vimeo.com позволяет ограничивать встраивание видео в определенные области. Однако при встраивании видео у меня есть скрипт, который запрашивает Vimeo для получения подробной информации о видео. Этот запрос выполняется с помощью функции PHP simplexml_load_file(), целевой URL - это URL видео Vimeo. Так как поле referrer пустое, однако Vimeo не разрешает доступ к видео, и сценарий не может получить информацию о видео.
К сожалению, Vimeo не разрешает переадресацию IP-адресов, единственным способом настройки конфиденциальности является установка реферера, чтобы он выглядел так, как будто запрос поступает из браузера, который пытается посмотреть видео на моем сайте.
Мне нужно знать, как я могу установить referrer-. Я не вижу way-, надеясь, что я кое-что упустил.
Конкретная строка:
$sxml = simplexml_load_file($target_url);
Да, ты можешь. Вы можете установить все заголовки, в которые хотите включить simplexml_load_file
для 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");
Выпущенный вопрос:
file_get_contents
затем передать тело ответа HTTP на simplexml_load_string
.Я знаю, что ваш вопрос конкретно связан с настройкой реферера, но есть некоторые проблемы с вашей оригинальной идеей.
То, как вы получаете доступ к метаданным видео, не поддерживается Vimeo и будет прервано в будущем без какого-либо расширенного предупреждения.
API Vimeo является единственным поддерживаемым способом получения метаданных видео.
Вы можете использовать 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);