我正在尝试使用guzzle下载外部文件。这是我使用的代码:
$url = 'https://testurl.net/dl/test.mp4?mime=true';
$path = storage_path('app/remote-uploads/test.mp4');
$client = new Client();
$client->get($url, ['sink' => $path]); 代码可以正常工作,并且可以从localhost下载,但当我将其推送到生产环境时,我收到以下错误:
Client error: `GET https://testurl.net/dl/test.mp4?mime=true` resulted in a `403 Forbidden` response:
{"status":403,"msg":"download ISP is different to request ISP. request: AS20115 download: AS30083"}我不太确定如何去做这件事,真的很感谢任何帮助!
发布于 2017-03-27 05:37:39
您似乎正在使用https://openload.co/api#download-getlink获取下载链接,然后再下载它。
在这一点上,我可以假设你的主机提供商为每个传出的HTTP请求使用不同的IP,这些IP甚至来自不同的ASs (你认为它们是“名称空间”,检查AS20115和AS30083)。这个特定的站点(openload.co)将这种情况视为安全问题,并阻止下载(第二个请求)。
在应用层上你无能为力。你必须和你的ISP谈谈它的路由规则。也许可以询问(购买)静态IP地址。
您可以尝试使用HTTP1.1保持连接来通过相同的连接发送所有请求,但这依赖于服务器,而openload.co可能不支持此功能。
附言:请在将来的问题中包含更多细节。其他人不是从你的脑海中读取上下文的向导:)
发布于 2019-01-28 04:54:59
如果您使用vpn。请禁用它
https://stackoverflow.com/questions/43012615
复制相似问题