我在服务器上收到HTTP PUT请求,我想将这些请求重定向/转发到其他服务器。
我在PHP服务器上处理PUT请求。
PUT请求正在使用基本的HTTP身份验证。
以下是一个例子:
www.myserver.com/service/put/myfile.xml
重定向到
www.myotherserver.com/service/put/myfile.xml
如何在不保存第一台服务器上的文件并使用CURL重新发送PUT请求的情况下执行此操作?
谢谢!
答案 0 :(得分:5)
HTTP / 1.1定义了此类重定向的状态代码307。但是,PUT通常由客户端软件使用,你几乎可以假设没有人荣誉307。
最有效的方法是在Apache上设置代理,将请求重定向到新的URL。
这是你在PHP中代理它的方式,
$data = file_get_contents('php://input');
$mem = fopen('php://memory');
fwrite($mem, $data);
rewind($mem);
$ch = curl_init($new_url);
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_INFILE, $mem);
curl_setopt($ch, CURLOPT_INFILESIZE, strlen($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);
fclose($meme);
答案 1 :(得分:2)
不可能。重定向是隐式的GET
请求。您需要使用curl
播放代理。
从技术上讲,保存在磁盘上也没有必要,您可以直接将响应主体直接传递给Curl的请求主体。但是因为我从来没有在PHP中做过这些(在Java中它是一块蛋糕),我无法给出更详细的答案。