문제

그래서 내용을 보면 HTTP 상태 코드 목록, 프로그래밍하는 동안 유용할 수 있는 것들이 많이 있을 것입니다.서버는 프로토콜과 같은 일부 작업을 처리할 수 있지만 이러한 코드 중 상당수는 브라우저에 페이지의 실제 상태를 알려주는 데 유용할 수 있습니다.

그래서 제 질문은 이러한 상태 코드 중 어떤 코드에 관심을 가져야 하는가입니다.어떤 것을 보내야 하는지 확인해야 하며 어떤 것은 일반 응용 프로그램 프로그래밍에서 절대 사용되지 않을 것입니다.

궁금하다면 이는 PHP 프로그래밍의 범위에 속하지만 아마도 다른 언어에도 적용될 수 있을 것입니다.

도움이 되었습니까?

해결책

이들 중 다수는 본질적으로 REST 스타일 API 사용에 유용합니다.예를 들어:

  • 200(정상): 자료를 요청하셨습니다.여기있어!

  • 201(생성됨): 새로운 리소스를 만들어 달라고 요청하셨습니다.내가 그랬어!다음에는 여기로 가서 저에게 물어보세요.

  • 202(수락됨): 나한테 뭐 좀 해달라고 했는데 시간이 좀 걸릴 테니 기다리지 마세요.여기로 가서 상태를 확인할 수 있습니다.

  • 300(복수 선택): 당신은 뭔가를 요청했지만 충분히 구체적이지 않았습니다.다음 중 어느 것을 의미하시나요?

  • 301(영구적으로 이동됨): 당신이 뭔가를 요청했지만 지금은 다른 곳에 있습니다.여기가 어디로 갔습니까?

  • 302(발견됨): 당신이 뭔가를 요청했지만 지금은 다른 곳에 있습니다.여기있어.

  • 304(수정되지 않음): 당신이 이전에 뭔가를 요청했지만, 지난번에 나에게 요청한 이후로 바뀌지 않았습니다.

  • 400 잘못된 요청): 당신이 나에게 요청한 일이 뭔가 잘못되었습니다.말씀하신 내용을 수정하고 다시 시도하세요.

  • 401(승인되지 않음): 이 요청을 완료하기 전에 신원을 확인해주시기 바랍니다.[메모:이것은 불행하게도 이름이 붙은 헤더 중 하나입니다.정말 제목을 붙여야 해 인증되지 않음;403이 더 비슷해요 승인되지 않은.]

  • 403 금지): 당신은 가질 수 없는 것을 요구했습니다.

  • 404 찾을 수 없음): 리소스를 요청하셨지만 설명과 일치하는 리소스가 없습니다.

  • 500(서버 오류): 문제가 발생하여 지금은 요청하신 내용을 제공해 드릴 수 없습니다.미안합니다.

  • 501(구현되지 않음): 나는 지금 그런 요구를 지지하지 않습니다.

  • 503(서비스를 사용할 수 없음): 지금은 요청에 응답할 수 없습니다.

다른 팁

더 정확하게 말하면 이는 HTTP 헤더가 아닌 HTTP 상태 코드일 뿐입니다.헤더는 많은 내용을 전달하며 클라이언트와 서버 모두에서 전송되므로 이 답변의 범위를 벗어납니다.

HTTP 헤더 중 하나, 즉 서버가 클라이언트에 보낸 첫 번째 헤더는 다음과 같습니다.

HTTP/1.x 200 OK

또는:

HTTP/1.x 404 Not Found

프로토콜 식별자 뒤에 나타나는 숫자 HTTP/1.x 그 뒤에 전송되는 해당 상태 메시지가 있는 상태 코드를 호출합니다.PHP 프로그래밍 시절에 사용해야 했던 상태 코드는 다음과 같습니다.

  • 200 OK 지금까지 가장 일반적입니다.이는 모든 것이 잘 작동했으며 콘텐츠로 응답하고 있음을 의미합니다.
  • 404 Not Found 특정 조건에서, 특히 요청이 서버에서 찾을 수 없는 실행 스크립트로 이어지는 경우 서버에서 자동으로 전송됩니다.때로는 특히 URI를 특별한 방식으로 처리하는 프레임워크를 작성하는 경우 404 상태 코드를 수동으로 설정하고 싶을 때가 있습니다.예를 들어 중앙 실행 스크립트가 하나 있는 경우 index.php .htaccess 또는 Apache 설정을 사용하여 모든 요청을 라우팅하는 동안 Apache는 자체적으로 404를 거의 반환하지 않습니다. index.php.하지만 분명히 통신하려는 일부 URI가 어디로도 연결되지 않아 자체 404 상태 헤더를 보내고 싶을 것입니다.
  • 301 Moved Permanently 그리고 302 Found (더 일반적으로 '임시 이동'으로 지칭됨).이 두 가지는 브라우저에게 다음을 찾도록 지시합니다. Location 헤더를 지정하고 거기에 지정된 URL로 사용자를 리디렉션합니다.대부분의 PHP 프레임워크에는 헤더도 처리하는 HTTP 리디렉션을 위한 자체 기능이 있습니다.기본 PHP 리디렉션 header('Location: http://www.google.com'); 자동으로 HTTP 상태를 302로 변경합니다.302와 301의 차이점을 깊이 이해한 적은 없지만 검색 엔진 최적화에는 301이 훨씬 낫다는 글을 읽은 적이 있어서 항상 301을 사용하려고 노력합니다.아마도 다른 사람이 정확한 차이점이 무엇인지 깨달을 수 있을 것입니다.주의해야 할 한 가지는 POST 데이터를 수신할 페이지에 301/302 상태 및 위치 헤더를 넣지 않는 것입니다.예전에 좀 문제가 있었어요.
  • 304 Not Modified 일반적으로 Apache 설정에 따라 자동으로 전송됩니다.정상적인 조건에서 대부분의 브라우저에는 요청된 항목이 사용자 컴퓨터에 캐시된 날짜/시간이 포함됩니다.ETag 및 기타 헤더가 이 목적으로 사용됩니다.Apache가 서버의 해당 파일이 그 이후로 변경되지 않았다고 판단하면 Apache는 종종 클라이언트에게 캐시된 버전을 사용하라고 알리는 내용 없이 304를 보냅니다.
  • 401 Unauthorized 사용자가 웹사이트의 제한된 섹션에 액세스하려고 할 때 전송됩니다.프롬프트가 취소되거나 인증되지 않았을 때 401 상태 코드를 전송하는 기본 사용자 이름/비밀번호 프롬프트를 지원하는 일부 오래된 HTML 기능과 서버 기술이 있습니다.요즘 대부분의 사람들은 사용자 인증 및 권한 관리를 위해 자체 PHP 구현을 작성하므로 Apache는 자체적으로 401을 전송하지 않는 경우가 많습니다.페이지에 액세스하려면 더 많은 권한이 필요함을 나타내기 위해 상태를 수동으로 보낼 수 있습니다.
  • 400 Bad Request 이해할 수 없는 요청을 받은 경우 Apache에서 전송합니다.일반적으로 수동으로 보내는 것에 대해 걱정할 필요가 없습니다.
  • 403 Forbidden 사용자가 지리적, IP 또는 금지 제한으로 인해 적절한 인증을 사용하더라도 액세스할 수 없는 영역에 액세스하려고 할 때 일부 사람들이 사용합니다.제가 직접 사용하진 않고 그냥 401과 404를 사용해서 채워넣고 있습니다.
  • 5xx.500시리즈는 개발자로서는 정말 보기 힘든 코드입니다.이는 귀하의 코드나 서버가 뭔가 잘못되었음을 의미합니다.충분한 성능을 갖춘 서버나 로드 밸런싱 시스템이 있고 코드에 오류가 없다면 500 시리즈는 절대 볼 수 없습니다.

글쎄, 그것은 헤더가 아닌 상태 코드이지만 그 중 어느 것이든 유용할 수 있습니다(5xx 시리즈는 그렇지 않을 것 같지만).

파일을 제공하거나 RESTful 웹 서비스를 제공하기 위해 헤더를 사용하는 것에 대해 이야기하고 계시나요?

그러면 헤더보다는 상태 코드를 따르게 됩니다.내가 일반적으로 사용한 것들은 다음과 같습니다.

200 OK
301 Moved Permanently
302 Found (temporary redirect)
400 Bad Request
403 Forbidden
404 Not found
500 Internal Server Error

물론 RESTful 웹 서비스의 경우 본문에 설명을 제공하는 것뿐만 아니라 더 설명적으로 텍스트를 변경할 수 있습니다.

다음은 다음과 같습니다.

418 I'm a teapot

그 목록을 빠르게 살펴보세요 (상태 코드 중), 제가 ​​자주 사용하는 것은 다음과 같습니다 (저는 PHP 웹 개발을 직업으로 하고 있습니다) :

  • 200 OK :거의 항상 Apache에서 전송됨
  • 301 Moved Permanently :일반적으로 나(또는 rewrite-rules를 사용하는 경우 Apache)가 전송합니다.
  • 302 Found :일반적으로 나(또는 rewrite-rules를 사용하는 경우 Apache)가 전송합니다.
  • 304 Not Modified :일반적으로 Apache(또는 그 앞의 역방향 프록시)에 의해 전송됩니다.
  • 401 Unauthorized :일반적으로 Apache에서 전송됨
  • 403 Forbidden :일반적으로 Apache에서 전송됨
  • 404 Not Found :상황에 따라 Apache와 나 모두가 보냈습니다.
  • 410 Gone :일반적으로 내가 보낸 것
  • 500 Internal Server Error :Apache와 나 모두가 보냈습니다.그것은 "기술적" 오류가 있을 때 일반적으로 사용하는 것입니다. 비록 그런 일이 절대로 발생해서는 안 되더라도 ^^

그리고 여기 제가 사용할 수 있는 것들이 있습니다 (특히 REST를 수행하는 경우) :

내가 가장 많이 사용한 것은 다음과 같습니다.

  • 301 - 영구적으로 이동됨 - 리소스가 새 URL로 영구적으로 이동된 경우 이를 사용합니다.
  • 302 - 일시적으로 이동됨 - 영구 리디렉션이 불가능한 경우 리디렉션에 사용합니다.
  • 404 찾을 수 없음.잘못된 URL에 대해 이를 제공하도록 서버를 구성해야 합니다.로그에서 이를 모니터링해야 합니다. 404가 너무 많으면 푸시가 잘못되었다는 신호입니다.
  • 500 내부 서버 오류.오류가 있을 때 이를 올바르게 보내도록 서버를 구성해야 합니다.로그에서 5xx 오류를 모니터링해야 합니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top