Ajax 호출에는 보안상 cross-domain 제한이 걸려 있고, 이를 우회하기 위해 Ajax 호출을 받아서 외부 주소로 전달해주는 proxy 스크립트를 사용하게 되는데 단순 GET 호출이 아니라 POST나 파일 폼 제출까지 처리할 경우가 있다. $_POST
위와 같은 헤더 정보를 연관배열에 담고 stream_context_create('http'=>배열) 식으로 생성하여 file_get_contents()에 붙여준다.$_GETfile_get_contents()를 이용해 http_build_query() 반환값을 포함한 대상 주소를 호출하는 것으로 끝난다.헤더 정보가 추가될 경우에는 stream_context_create()를 통해 생성하여 file_get_contents()에 같이 붙여준다.$_FILEShttp_post_fields()는 PHP의 HTTP 확장에서 제공하는 함수이며, POST 정보에 파일까지 포함해 처리해준다.인자는 주소, POST 정보, 파일 정보, 헤더 옵션, 진행결과 저장용 변수이며 파일 정보 이후는 없어도 된다. 주소는 URL이면 되고, POST 값은 http_build_query()에서 요구하는 것과 동일한 형태면 된다. 헤더 옵션은 문서를 참조해 여러가지 정보를 전달할 수 있다.파일 정보의 경우 $_FILES를 그대로 쓸 수는 없고 아래와 같이 $_FILES 각 항목을 다시 정리한 2차원 배열이 되어야 한다. $fileArray = Array(); foreach ($_FILES as $_fieldName=>$_file) { $fileArray[] = Array( 'name' => $_fieldName ,'type' => $_file['type'] ,'file' => $_file['tmp_name'] ); }인증 정보PHP 페이지에서 세션 등의 인정 정보를 요구할 경우 proxy를 거쳐 호출되는 페이지에도 해당 인증 정보를 유지해야 한다.
PHPSESSID라는 이름은 서버 설정에 따라 다를 수 있다. |