首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在PHP中处理HTTP Expect报头

如何在PHP中处理HTTP Expect报头
EN

Stack Overflow用户
提问于 2016-09-05 03:01:31
回答 1查看 853关注 0票数 0

我使用curl命令通过POST请求发送文件。我没有使用PHP curl库。但是,curl命令太客气了,会发送一个Expect报头。我应该如何在服务器端处理它?我知道服务器必须返回一个100-continue响应,但它如何继续接收文件?$_FILES数组始终为空。

这是我发送给服务器的内容:

代码语言:javascript
复制
/usr/bin/curl -sS -X POST -T "/tmp/phpuPfIDd" http://localhost/stats/rgateway/index.php/data 2>&1

服务器端代码应该是这样的:

代码语言:javascript
复制
<?php
session_start();

switch($_SERVER['REQUEST_METHOD']) {
    case 'GET':
        # Do something if it is a GET request   
        break;

    case 'POST':    
        $headers = apache_request_headers();
        if (array_key_exists('Expect', $headers)) {
                 # What should I do here in order to receive uploaded the file?
        }   
        break;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-05 07:27:41

在服务器端,这应该由你的web服务器来处理,而不需要PHP去担心这些底层的事情。

来自man curl的相关部分

代码语言:javascript
复制
   -0, --http1.0
          (HTTP) Tells curl to use HTTP version 1.0 instead of using its
          internally preferred: HTTP 1.1.

   --expect100-timeout <seconds>
          (HTTP)  Maximum  time in seconds that you allow curl to wait for a
          100-continue response when curl emits an Expects: 100-continue
          header in its request. By default curl will wait one second. This 
          option accepts decimal values! When curl stops  waiting, it will
          continue as if the response has been received.

          (Added in 7.47.0)

因此,如果你有一个足够新的版本,看起来cURL将“继续,就像已经收到响应一样”。如果您没有足够新的版本,Expect是一个HTTP1.1报头,所以将请求作为HTTP1.0发送应该可以解决问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39320470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档