覆盖Content-Type会导致内部服务器错误

时间:2014-02-24 09:06:28

标签: php ios apache curl http-headers

我正在做iOS应用,我需要自己设置Content-Type标头。

每当我覆盖HTTP标头时,Web服务器返回500 - 内部服务器错误。

所以我尝试使用PHP代码来检查这是iOS还是服务器端错误。

    $target_url = 'http://myserver.com';
    $file_name_with_full_path = realpath('8.jpeg');
    $post = array('extra_info' => '123456','file_contents'=>'@'.$file_name_with_full_path);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$target_url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: multipart/form-data; boundary=--xxx"));
    curl_setopt($ch, CURLOPT_POST,1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    $result=curl_exec ($ch);
    curl_close ($ch);
    echo $result;

以上内部服务器错误的代码响应。

但每当我删除波纹线时,它都能正常工作。

curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: multipart/form-data; boundary=--xxx"));

最后我尝试使用Chrome Postman插件重新生成此问题。我得到了相同的结果。如果我将Content-Type设置为multipart/form-data,我最终会遇到同样的问题。

与apache或php配置有什么关系来接受覆盖标头吗?

感谢解决此问题的任何线索。

1 个答案:

答案 0 :(得分:0)

每当您使用参数param => @/test/file.txt时,它默认使用多部分文件上传。所以当你改变它时,你会收到错误。

只有删除文件上传参数时才能更改标题(没有任何错误)。