development

403 오류 페이지 에뮬레이트

big-blog 2021. 1. 5. 21:05
반응형

403 오류 페이지 에뮬레이트


이 페이지가 금지되어 있음을 브라우저에 알리는 헤더를 보낼 수 있다는 것을 알고 있습니다.

header('HTTP/1.0 403 Forbidden');

그러나 이러한 유형의 오류에 대해 서버에 생성 된 사용자 지정 오류 페이지를 어떻게 표시 할 수 있습니까?

기본적으로 헤더를 보내는 것만으로 흰색 페이지가 표시되지만 고객 오류 페이지를 사용할 수 있다는 내용을 잠시 기억합니다. 아는 사람 있나요?


헤더를 변경 한 후 사용자 정의 오류 페이지를 포함하십시오.


헤더를 보낸 후 콘텐츠를 에코하기 만하면됩니다.

header('HTTP/1.0 403 Forbidden');

echo 'You are forbidden!';

금지


http_response_code 는 PHP 5.4에서 도입되었으며 작업을 훨씬 쉽게 만들었습니다!

http_response_code(403);
die('Forbidden');

이를 위해 먼저 사용자가 오류 403을 수신한다고 브라우저에 알려야합니다.이를 위해 다음 코드를 사용할 수 있습니다.

header("HTTP/1.1 403 Forbidden" );

그러면 스크립트는 "오류, 오류, 오류, 오류, 오류 ......."를 보내므로 중지해야합니다. 당신이 사용할 수있는

exit;

이 두 줄로 서버는 오류를 보내고 스크립트를 중지합니다.

잊지 마세요 : 오류를 에뮬레이트하지만 .htaccess 파일에서 설정해야합니다.

ErrorDocument 403 /error403.php

많은 답변을 보았지만 올바른 방법은 PHP 매뉴얼에 따라 헤더 함수 호출에 대한 전체 옵션을 제공하는 것입니다.

void header ( string $string [, bool $replace = true [, int $http_response_code ]] )

다음과 같이 호출하면

header('HTTP/1.0 403 Forbidden', true, 403);

Apache 또는 다른 서버로 구성된 HTTP 403의 정상적인 동작은 다음과 같습니다.


.htaccess

ErrorDocument 403     /403.html

나는 여기에서 모든 답변을 읽었으며 그중 어느 것도 내 상황에 대한 완전한 답변이 아니기 때문에 (이 질문에서 정확히 동일) 여기에 제안 된 답변의 일부를 수집하고 정확한 해결책을 찾는 방법이 있습니다.

  1. 서버의 실제 403 페이지를 방문하십시오. (서버에서 금지 된 URL로 이동하거나 원하는 403 페이지로 이동)
  2. 마우스 오른쪽 버튼을 클릭하고 '소스보기'를 선택합니다. 모든 소스를 선택하고 http://domain.com/403.html 과 같은 도메인의 파일에 저장합니다.
  3. 이제 실제 금지 된 페이지 (또는 PHP의 일부에서 금지 된 상황)로 이동합니다. 예 : http://domain.com/members/this_is_forbidden.php
  4. 아래에이 코드를 에코 하기 전에 모든 HTML 출력 또는 헤더! (공백이 있어도 PHP가 HTML / TEXT HTTP 헤더를 보내며 작동하지 않습니다.) 아래 코드가 첫 번째 줄 이어야합니다 !

        <?php header('HTTP/1.0 403 Forbidden');
        $contents = file_get_contents('/home/your_account/public_html/domain.com/403.html', TRUE);
        exit($contents);
    

이제 정확한 솔루션이 있습니다. CPANEL Latest Visitors를 통해 확인 및 확인했으며 정확한 403 이벤트로 등록되었습니다.


서버의 의무를 최소화하려면 간단하게 만드십시오.

.htaccess

ErrorDocument 403 "Forbidden"

PHP

header('HTTP/1.0 403 Forbidden');

die(); // or your message: die('Forbidden');

ModRewrite 사용 :

RewriteRule ^403.html$ - [F]

www 루트에 "403.html"이라는 빈 문서를 만드십시오. 그렇지 않으면 403 대신 404 오류가 발생합니다.


아파치 conf 또는 .htaccess 내에 이미 정의 된 ErrorDocument 시나리오가 있으며 PHP를 통해 4xx 상태 코드를 수동으로 보낼 때 해당 페이지가 나타나도록하고 싶습니다.

불행히도 이것은 php가 사용자의 브라우저 (Apache 웹 서버가 아닌)로 직접 헤더를 보내는 반면 ErrorDocument는 Apache에서 생성 된 http 상태에 대한 디스플레이 핸들러이기 때문에 일반적인 방법으로는 불가능합니다.


403을 보낸 후 페이지를 새로 고칩니다.

<?php 
header('HTTP/1.0 403 Forbidden');
?>
<html><head>
<meta http-equiv="refresh" content="0;URL=http://my.error.page">
</head><body></body></html>

Alex, 다음과 같은 헤더를 사용하여 사용자 지정 페이지로 리디렉션 할 수 있습니다.

header('Location: my403page.html');

403 페이지에 원본 헤더 코드를 포함했는지 확인하세요.

header('HTTP/1.0 403 Forbidden');

또는 다음과 같이 헤더를 만들고 403 페이지를 포함 할 수 있습니다.

header('HTTP/1.0 403 Forbidden');
include('my403page.html');

참조 URL : https://stackoverflow.com/questions/5061675/emulate-a-403-error-page

반응형