2014-02-24 4 views
0

iOS 응용 프로그램을 수행하고 있으며 Content-Type 헤더를 직접 설정해야합니다.Content-Type을 재정 의하여 내부 서버 오류가 발생합니다.

HTTP 헤더를 무시할 때마다 웹 서버는 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-Typemultipart/form-data으로 설정하면 같은 문제가 발생합니다.

오버 라이딩 헤더를 허용하기 위해 아파치 또는 PHP 구성과 관련이 있습니까?

이 문제를 해결하는 데 대한 단서를 찾아 주셔서 감사합니다.

+0

서버 오류 로그를 확인하십시오. – Rikesh

+0

나는 서버 관리자에게 연락하여 오류가 기록되지 않았다고 말했다. 나는 정말로 혼란스러운 상황에 처해있다. –

+0

PHP 오류를 켜십시오. 파일의 맨 위에'in_set (display_errors, 1);'을 추가하십시오. – Rikesh

답변

0

매개 변수를 param => @/test/file.txt으로 사용할 때마다 기본적으로 멀티 파트 파일 업로드가 사용됩니다. 따라서 이것을 변경하면 오류가 발생합니다.

파일 업로드 매개 변수를 제거한 경우에만 헤더를 변경할 수 있습니다 (오류없이).

관련 문제