HTTP 와 HTTPS

PHP 3, PHP 4. PHP 4.3.0 이후의 https://

HTTP GET 방식을 사용하여, HTTP 1.0으로 파일/자원에 읽기 전용 권한을 허용합니다. 이름 기반 가상 호스트를 처리하기 위해서 Host: 헤더를 전송합니다. ini 파일이나 스트림 환경을 사용하여 user_agent 문자열을 설정하면, 요청에 같이 포함합니다.

주의

IIS 등의 표준과 호환되지 않는 일부 웹서버에서는 이 방법으로 데이터를 전송할 때 PHP가 경고를 발생합니다. 이러한 웹서버에서 사용할 때는 error_reporting 레벨을 낮춰서, 경고를 포함하지 않도록 하십시오.

리다이렉트(Redirect)는 PHP 4.0.5부터 지원합니다; 이전 버전을 사용한다면 URL의 마지막에 슬래쉬를 포함해야 합니다. (모든 리다이렉트를 처리한 에후) 문서가 어떤 URL 오는지 파악해야 한다면, 스트림을 통해 반환하는 응답 헤더를 처리해야 합니다.

<?php
$url
= 'http://www.example.com/redirecting_page.php';

$fp = fopen($url, 'r');

/* PHP 4.3.0 이전에서는 stream_get_meta_data()
   대신 $http_response_header를 사용하십시오 */
foreach(stream_get_meta_data($fp) as $response) {

  
/* 어디로 리다이렉트합니까? */
  
if (substr(strtolower($response), 0, 10) == 'location: ') {
    
/* 리다이렉트 되는 곳으로 $url을 갱신합니다 */
    
$url = substr($response, 10);
  }

}

?>

스트림은 리소스의 body에 접속할 권한이 있다; 헤더는 $http_response_header 변수에 저장된다. PHP 4.3.0 이후부터, 헤더는 stream_get_meta_data()를 사용하여 이용가능하다.

HTTP 접속은 읽기-전용이다; HTTP 리소스에 데이터를 쓰거나 파일을 복사할수 없다.

참고: HTTPS는 PHP 4.3.0부터 지원되었다. OpenSSL에 대한 지원 옵션으로 컴파일해야 한다.

표 J-2. 래퍼 요약

속성지원
allow_url_fopen으로 제한Yes
읽기 허용Yes
쓰기 허용No
추가 허용No
동시 읽기/쓰기 허용N/A
stat() 지원No
unlink() 지원No
rename() 지원No
mkdir() 지원No
rmdir() 지원No

표 J-3. 컨텍스트 옵션(PHP 5.0.0의)

이름사용기본값
method 원격 서버에 의해 지원되는 GET, POST과 다른 모든 HTTP 메소드 GET
header 요청시 전송되는 추가적인 헤더. 이 옵션 값은 다른 값들(User-agent:, Host:, Authentication:)에 의해 오버라이드될것이다.  
user_agent User-Agent: 헤더에 의해 전송되는 값. 이 값은 user-agent가 header 컨텍스트 옵션에서 설정되지 않을때만 사용될것이다. php.ini setting: user_agent
content 헤더 다음에 전송되는 추가데이터. 표준적으로 POST나 PUT 요청에서 사용된다.  
proxy 프록시 서버를 지정하는 URI. (예. tcp://proxy.example.com:5100)  
request_fulluri TRUE로 설정하면, 전체 URI를 사용하여 요청을 작성합니다. (예. GET http://www.example.com/path/to/file.html HTTP/1.0) 이는 비표준 요청 형식이지만, 몇몇 프록시 서버는 이를 요구합니다. FALSE

기저(Underlying) 소켓 스트림 컨텍스트 옵션: http:// 스트림에 대한 기저(underlying) 전송에 의해 지원될수 있는 추가 컨텍스트 옵션이고, tcp:// 전송 컨텍스트 옵션으로 참조된다. https:// 스트림에 대해서는 ssl:// 전송 컨텍스트 옵션으로 참조된다.