Back End/etc

[PHP] CURL 은 리다이렉트 응답이 오면 재요청하지 않는다. (feat. CURL 관련함수 정리)

DevPing9_ 2022. 6. 5. 22:00
PHP 는 개발자마다 코드 구현 패턴이 너무 달라
너무~~~~ 별로다 😭😭😭

 

CURL 은 요청에 대한 응답이 리다이렉트로 돌아와도 재요청하지 않는다.

CURL 요청에 대한 response가 비어있는 상태로 들어오는 현상을 발견해서
이리저리 로그를 찍어봤더니
CURL 요청은 서버에서 리다이렉트를 던져주면
재요청을 하지 않더라...그래 뭐... 그럴 수 있지...
그게 디폴트일 수 있지..

 

리다이렉트 응답에 대해 Location 헤더를 따르도록 내가 일일이 코딩해야되?

다행이도 그건 아니었다.
CURLOPT_FOLLOWLOCATION 라는 옵션을 setopt() 에서 설정해주면 된다.

 

 

 

# CURL 관련 함수

  •  curl_init : 세션 초기화, 핸들값 리턴
  •  curl_setopt : 옵션 세팅 (옵션값에 대해서는 하단에 추가 설명)
  •  curl_exec : curl 실행
  •  curl_errno : 에러 발생 시 에러번호를 가져온다.
  •  curl_error : 에러 발생 시 에러메시지를 가져온다.
  •  curl_getinfo : 상태 정보를 리턴한다.
  •  curl_close : curl 세션을 닫는다.

 

 

# setopt 옵션 인자

  •  CURLOPT_FOLLOWLOCATION : TRUE로 설정 시 HTTP 헤더로 보내는 LOCATION헤더의 내용을 따른다.
  •  CURLOPT_HEADER : TRUE로 설정 시 헤더의 내용을 출력
  •  CURLOPT_NOBODY : TRUE로 설정 시 본문의 내용을 받지 않는다.
  •  CURLOPT_ POST : 전송 메서드 설정 (1-POST / 2-GET)
  •  CURLOPT_RETURNTRANSFER : TRUE로 설정 시 curl_exec()의 반환 값을 문자열로 반환
  •  CURLOPT_PORT : 연결 포트 설정
  •  CURLOPT_TIMEOUT : 반환 값에 대한 타임아웃 설정
  •  CURLOPT_POSTFIELDS : 'POST'로 보내는 데이터 정의
  •  CURLOPT_REFERER : HTTP 요청에 사용되는 REFERER헤더의 내용
  •  CURLOPT_URL : 접속할 URL 주소 설정
  •  CURLOPT_USERAGENT : HTTP 요청에 사용되는 User-Agent헤더의 내용

 

 

# Reference

 

PHP - CURL관련함수 정리

■ CURL (Client URL Library Functions)  - 커맨드 라인에서 URL 문법을 사용하여 파일을 전송하는   내가 원하는 주소의 페이지에 임의의 값을 전달하고 리턴 값을 받아오는 역할  curl 모듈을 사용하기

kimby.tistory.com

 

728x90