PHP 매뉴얼
이전 | J. 부록. 지원 프로토콜/래퍼 목록 | 다음

# HTTP 와 HTTPS

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

- `http://example.com`

- `http://user:password@example.com`

- `https://example.com`

- `https://user:password@example.com`

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://` 전송 컨텍스트 옵션으로 참조된다.

이전 | 처음으로 | 다음
지원 프로토콜/래퍼 목록 | 위로 | FTP 와 FTPS