506 상태 코드에 대한 일반적인 설명
HTTP 상태 코드 506 Variant Also Negotiates은 서버가 소위 투명 콘텐츠 협상을 사용하는 구성으로 배포될 때 발생하는 서버 내의 특정 문제를 나타내는 지표입니다. 이러한 유형의 콘텐츠 협상은 요청하는 클라이언트의 요구 사항(예: 다른 언어, 파일 형식 또는 인코딩)에 따라 제공할 수 있는 다양한 버전의 리소스를 관리하는 데 사용됩니다.
본질적으로 506 Variant Also Negotiates 상태 코드는 서버에 잘못된 구성이 있어 무한한 협상 루프를 초래한다는 것을 의미합니다. 서버가 클라이언트의 기본 설정에 따라 요청된 리소스의 특정 버전을 선택하는 대신 선택 자체가 또 다른 협상을 의미합니다. 그 결과 서버는 하나의 변형이 다른 변형을 참조하고, 이 변형이 다시 다른 변형을 참조하는 등의 참조 사이클에 걸려 어떤 변형도 제공되지 않습니다.
간단한 예: 클라이언트가 특정 언어로 된 웹 페이지를 원합니다. 서버는 웹사이트의 여러 언어 버전을 보유하고 있으며 가장 적합한 버전을 선택하려고 시도합니다. 그러나 서버의 구성이 올바르지 않으면 가장 적합한 버전을 선택해야 하는 프로세스가 최종 선택을 하는 대신 다른 협상을 참조할 수 있습니다. 506 Variant Also Negotiates 상태 코드는 이러한 내부 충돌 또는 잘못된 구성으로 인해 서버가 적절한 버전의 리소스를 제공할 수 없음을 클라이언트에 알립니다.
실제로 이 상태 코드는 매우 구체적인 서버 구성 및 오류 조건을 가정하기 때문에 거의 발생하지 않습니다. 문제를 해결하려면 무한 루프에 들어가지 않고 콘텐츠 협상이 올바르게 수행될 수 있도록 서버 구성을 검토하고 수정해야 합니다.
HTTP 상태 코드 506의 사양
출처 / 인용 출처: 506 Variant Also Negotiates HTTP 상태 코드는 RFC2295 섹션 RFC2295에 명시되어 있습니다.
PHP로 506 상태 코드를 던지는 방법은 무엇인가요?
웹 페이지에 HTTP 상태 코드 506를 던지려면 PHP 함수 http_response_code를 사용할 수 있습니다. 구문은 다음과 같습니다: http_response_code(506) (PHP 5 >= 5.4.0, PHP 7, PHP 8)
506 HTTP 상태 코드 테스트
클라이언트 측에서 HTTP 상태 코드(이 경우 506 Variant Also Negotiates) 및 기타 정보를 표시하려면 F12를 사용하여 개발 콘솔을 열어야 합니다. 그런 다음 "네트워크" 탭으로 이동합니다. 이제 페이지를 열면 네트워크 탭에 웹사이트(예: index.php)가 표시됩니다. 이를 선택한 다음 허더 섹션을 선택해야 합니다. 그러면 사용자에게 다음과 같은 결과가 표시됩니다:
URL: https://http-statuscode.com/errorCodeExample.php?code=506
상태: 506 Variant Also Negotiates
그: Network
IP 주소: XX.XX.XX.XX
상태 코드 506에 대한 오류 페이지를 직접 만드는 방법
Apache Webserver
웹 서버 "아파치"는 인터넷에서 가장 일반적인 웹 서버 중 하나입니다. "Apache"에서 506 Variant Also Negotiates 오류 페이지를 직접 생성하려면 다음 파일에서 다음과 같이 변경해야 합니다.
NGINX Webserver
웹 서버 "Apache"와 마찬가지로 "NGINX"도 인터넷에서 널리 사용됩니다. "NGINX"에서 506 Variant Also Negotiates 오류 페이지를 직접 생성하려면 다음 파일에서 다음과 같이 변경해야 합니다.
location = /506.html {
root /usr/share/nginx/html;
internal;
}
506 상태 코드의 브라우저 호환성
Chrome | no data |
Edge | no data |
Firefox | no data |
Opera | no data |
Safari | no data |
Chrome Android | no data |
Firefox for Android | no data |
Opera Android | no data |
Safari on iOS | no data |
Internet | no data |
WebView Android | no data |
프로그래밍 언어의 상수
http.StatusVariantAlsoNegotiates
Response::HTTP_VARIANT_ALSO_NEGOTIATES_EXPERIMENTAL
:variant_also_negotiates