获取Dailymotion私有视频列表时遇400错误:Host头格式错误
问题解决:Dailymotion API请求出现"malformed Host header"错误
错误根源
你在获取私有视频列表的请求里,手动设置了错误的Host头:Host: partner.api.dailymotion.com/rest。这里的rest是API路径的一部分,不属于主机地址,正确的主机地址应该是partner.api.dailymotion.com。另外,curl会自动根据请求URL生成正确的Host头,手动设置反而容易触发格式错误。
修正后的完整代码
<?php // 获取access token $url = "https://partner.api.dailymotion.com/oauth/v1/token"; $curl = curl_init($url); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // 移除手动设置的Host头,curl会自动处理 $headers = array( "Content-Type: application/x-www-form-urlencoded", ); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); $data = "grant_type=client_credentials&client_id=xxx&client_secret=xxx&scope=manage_videos"; curl_setopt($curl, CURLOPT_POSTFIELDS, $data); $resp = curl_exec($curl); curl_close($curl); $data = json_decode($resp, true); $access_token = $data['access_token']; // 获取私有视频列表 $url = "https://partner.api.dailymotion.com/user/xxx/videos?fields=id&limit=30&private=true"; $curl = curl_init($url); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); // 移除错误的Host头,直接添加授权头 $headers = array( "Authorization: Bearer " . $access_token, ); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); $resp = curl_exec($curl); // 新增curl错误调试,方便排查后续问题 if(curl_errno($curl)){ echo 'Curl错误: ' . curl_error($curl); } curl_close($curl); // 输出结果查看 var_dump($resp); ?>
核心修正点
- 删掉两处手动设置的
Host头,让curl自动生成正确的Host信息 - 调整视频列表请求的headers数组,直接添加授权头,避免数组索引赋值可能引发的问题
- 增加curl错误调试代码,便于后续排查其他请求异常
内容的提问来源于stack exchange,提问作者Ophelia
相关产品推荐
相关产品推荐

