下载ISP与请求ISP不同

时间:2017-03-25 04:41:49

标签: php guzzle

我正在尝试使用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"}

我不太清楚如何解决这个问题,非常感谢任何帮助!

2 个答案:

答案 0 :(得分:4)

似乎您正在使用https://openload.co/api#download-getlink获取下载链接并随后下载。

在此我可以假设您的托管服务提供商为每个传出的HTTP请求使用不同的IP,这些IP甚至来自不同的AS(您将它们视为"命名空间",检查{{3} }和AS20115)。此特定站点(openload.co)将此情况视为安全问题并阻止下载(第二个请求)。

您无法在应用程序级别上执行任何操作。您必须与ISP讨论其路由规则。也许询问(购买)静态IP地址。

您可以尝试使用HTTP 1.1保持活动连接来通过相同的连接发送所有请求,但这取决于服务器,并且openload.co可能不支持此功能。

P.S。请在将来的问题中包含更多详细信息。其他人不是从头脑中读取背景的巫师:)

答案 1 :(得分:0)

(如果您使用vpn)。请禁用它