개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.24 01:10

get_headers() 함수에 대한 질문

목록
  • Azure마스터 1일 전 2025.05.24 01:10
  • 5
    1
제가 php에서 get_headers() 함수를 사용하여 HTTP 헤더를取得하는 과정에서 문제가 있습니다.

get_headers() 함수는 URL의 HTTP 헤더를 가져올 수 있는 함수입니다. 하지만 이 함수를 사용하여 헤더를 가져올 때, 어떤 경우에 헤더가 비어있는지 궁금합니다.

예를들어, URL이 존재하지 않거나, 접근 권한이 없는 경우에는 헤더가 비어있나요?

혹시 이러한 경우를 대비하여 다른 방법을 사용해야 하는지 궁금합니다.

사용하는 php 버전은 7.4입니다.

혹시 이러한 문제를 해결하는 방법을 알려주실 수 있을까요?

    댓글목록

    profile_image
    나우호스팅  1일 전



    get_headers() 함수는 URL의 HTTP 헤더를 가져올 때, 다음과 같은 경우에 헤더가 비어질 수 있습니다.

    1. URL이 존재하지 않는 경우: URL이 존재하지 않으면 get_headers() 함수는 HTTP 헤더를 가져올 수 없으며, 헤더가 비어질 것입니다.
    2. 접근 권한이 없는 경우: URL에 접근 권한이 없으면 get_headers() 함수는 HTTP 헤더를 가져올 수 없으며, 헤더가 비어질 것입니다.
    3. 시간 초과: get_headers() 함수는 기본적으로 5초의 시간 초과를 가지고 있습니다. URL이 응답이 느리거나, 서버가 다운된 경우, 헤더가 비어질 것입니다.
    4. SSL/TLS 오류: URL이 SSL/TLS 오류를 발생시키면 get_headers() 함수는 HTTP 헤더를 가져올 수 없으며, 헤더가 비어질 것입니다.

    이러한 문제를 해결하기 위해 다른 방법을 사용할 수 있습니다.

    1. curl 라이브러리 사용: curl 라이브러리 사용을 통해 HTTP 헤더를 가져올 수 있습니다. curl 라이브러리 사용 시, 시간 초과, SSL/TLS 오류를 설정할 수 있습니다.
    2. file_get_contents() 함수 사용: file_get_contents() 함수를 사용하여 URL의 내용을 가져올 수 있습니다. 그리고 헤더를 가져올 수 있습니다.
    3. GuzzleHttp 라이브러리 사용: GuzzleHttp 라이브러리 사용을 통해 HTTP 헤더를 가져올 수 있습니다. GuzzleHttp 라이브러리 사용 시, 시간 초과, SSL/TLS 오류를 설정할 수 있습니다.

    예를 들어, curl 라이브러리 사용을 통해 HTTP 헤더를 가져올 수 있습니다.

    #hostingforum.kr
    php
    
    $ch = curl_init($url);
    
    curl_setopt($ch, CURLOPT_NOBODY, true);
    
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    curl_setopt($ch, CURLOPT_HEADER, true);
    
    curl_setopt($ch, CURLOPT_TIMEOUT, 10); // 시간 초과 설정
    
    
    
    $headers = curl_exec($ch);
    
    curl_close($ch);
    
    
    
    print_r($headers);
    
    


    또는 file_get_contents() 함수를 사용하여 HTTP 헤더를 가져올 수 있습니다.

    #hostingforum.kr
    php
    
    $headers = get_headers($url, 1);
    
    
    
    print_r($headers);
    
    


    또는 GuzzleHttp 라이브러리 사용을 통해 HTTP 헤더를 가져올 수 있습니다.

    #hostingforum.kr
    php
    
    use GuzzleHttpClient;
    
    
    
    $client = new Client();
    
    $response = $client->head($url, ['timeout' => 10]); // 시간 초과 설정
    
    
    
    $headers = $response->getHeaders();
    
    
    
    print_r($headers);
    
    

    2025-05-24 01:11

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 22,154건 / 17 페이지

검색

게시물 검색