本地Web应用调用Youtube遇CORS,如何通过代理构造请求地址?
解决CORS Anywhere请求构造问题
正确的请求地址格式
直接把完整的带协议的Youtube目标URL拼接在CORS Anywhere代理地址之后,示例:
https://cors-anywhere.herokuapp.com/https://www.youtube.com/watch?v=<你的视频ID>
⚠️ 注意:目标URL必须包含https://,不能只写www.youtube.com,否则代理无法识别有效目标地址。
必须添加的请求头
请求时必须携带以下任意一个请求头,否则会触发「Missing required request header」错误:
Origin: http://localhost:3000X-Requested-With: XMLHttpRequest
用Fetch API的示例代码:
fetch('https://cors-anywhere.herokuapp.com/https://www.youtube.com/watch?v=<你的视频ID>', { headers: { 'Origin': 'http://localhost:3000' } }) .then(res => res.text()) .then(data => console.log(data)) .catch(err => console.error(err));
之前的错误原因
- 第一次尝试只传了
www.youtube.com,缺少https://协议,代理无法解析目标地址。 - 第二次尝试错误地把Origin参数拼进URL路径里,Origin是请求头字段,不是URL的一部分,所以触发「Invalid host」错误。
内容的提问来源于stack exchange,提问作者Mysterious Otter
相关产品推荐
相关产品推荐

