我正在做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配置有什么关系来接受覆盖标头吗?
感谢解决此问题的任何线索。
答案 0 :(得分:0)
每当您使用参数param => @/test/file.txt
时,它默认使用多部分文件上传。所以当你改变它时,你会收到错误。
只有删除文件上传参数时才能更改标题(没有任何错误)。