我注意到,自2013年7月29日起,GCS网络服务已经开始返回“HTTP / 1.1 100继续”,而不是通常的“HTTP / 1.1 200 OK”(后面是关于服务器的一些元数据)。
当我在我的头上做一个PUT对象时就会看到这一点。
我的问题是,我该如何解决这个问题?我只是重新发送请求吗?我是否将请求重定向到其他位置?
这是我的请求:
$headers = array('Host: '.$bucket.'.commondatastorage.googleapis.com',
'Date: '.$timestamp, $version_header, 'Content-Type: text/plain',
$project_header, 'Content-Length: '.filesize($objectPath),
'Authorization: OAuth '.$accessToken);
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_PUT, 1);
curl_setopt($c, CURLOPT_INFILE, $fp);
curl_setopt($c, CURLOPT_INFILESIZE, filesize($objectPath));
curl_setopt($c, CURLOPT_HEADER, 1);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($c, CURLOPT_TIMEOUT, 60); //timeout in 60s
curl_setopt($c, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($c);
答案 0 :(得分:4)
这是HTTP 1.1的一项功能;
基本上,您的客户端仅使用额外的行发送标题;
Expect: 100-continue
...等待发布身体几百毫秒。如果超时到期或服务器有100 Continue
响应,则客户端继续上传,如果有417 Expectation Failed
,则上传中止。
这允许服务器在上传之前检查它是否会接受请求。例如,如果文件的大小大于Google云端存储的剩余配额,则在被拒绝之前上传它将毫无用处。
上传完成后,您会像往常一样获得额外的200 OK
响应。
编辑:
我看到你正在运行PHP。有关PHP / Curl的更多信息,请参见this question。