HTTP 304 Not Modified

HTTP 304 Not Modified의 의미, 3xx 코드이지만 리디렉션이 아닌 이유, ETag와 Last-Modified의 작동 방식, 대규모 사이트에서 순위에는 영향을 주지 않으면서 크롤링 효율에 간접적으로 도움을 줄 수 있는 이유를 설명합니다.

최초 게시: 2026년 7월 3일 · 최근 업데이트: 2026년 8월 8일 · Advanced
언어
이 페이지의 근거 신호 1개

HTTP 304 Not Modified는 조건부 GET 또는 HEAD 요청의 조건이 거짓으로 평가되어, 그렇지 않았다면 200이 되었을 응답입니다. 3xx 계열이지만 리디렉션은 아니며 Location 헤더와 본문이 없습니다. If-None-Match(ETag와 비교) 또는 If-Modified-Since(Last-Modified와 비교)가 요청을 조건부로 만들고, 검증자가 여전히 일치하면 서버는 본문 없는 304를 반환하며 클라이언트는 캐시된 사본을 재사용합니다. SEO에서 직접적인 순위 효과는 없습니다. Google은 이미 콘텐츠를 가지고 있고 304는 변경 사항이 없음을 확인할 뿐이지만 Search가 URL 신호를 다시 계산할 수는 있습니다. 대신 변경이 드문 URL이 많은 대규모 사이트에서는 크롤러가 변경되지 않은 페이지를 다시 다운로드하지 않아 대역폭과 서버 계산을 절약하고 크롤링 효율에 간접적으로 도움을 줄 수 있습니다. Google은 ETag를 기본 검증자로 권장하며, 301/302/307/308 리디렉션이나 실제로 보낼 콘텐츠가 없는 204 No Content와 혼동해서는 안 됩니다.

TL;DR — 304는 조건부 GET/HEAD의 조건이 거짓으로 평가되어, 그렇지 않았다면 200이 되었을 응답입니다(RFC 9110 §15.4.5). 3xx 계열이지만 리디렉션은 아닙니다: Location도 새 URL도 없고, 규범적으로 본문도 없습니다(“콘텐츠나 트레일러를 포함할 수 없습니다”). 조건은 If-None-Match(ETag와 비교) 및/또는 If-Modified-Since(Last-Modified와 비교)로 전달됩니다. 검증자가 여전히 일치하면 서버는 304를 반환하고 클라이언트는 캐시를 재사용합니다. SEO 영향은 직접적인 순위 효과 없음입니다. Google은 이미 콘텐츠를 가지고 있지만 Search가 URL 신호를 다시 계산할 수는 있습니다. 대규모 사이트에서는 자원을 절약할 수 있고 Google은 이것이 크롤링 효율을 간접적으로 높일 수 있다고 말하지만, 크롤링 예산을 다른 URL로 자동 재배분한다고 약속하지는 않습니다. Google의 크롤링 인프라는 두 검증자를 지원하며 날짜 형식의 함정이 없는 ETag를 기본값으로 권장합니다. URL을 이동시키는 301/302/307/308과, 실제로 보낼 것이 없어서 본문이 없는 204와 구분하세요.

사양에서 말하는 304의 의미

RFC 9110(HTTP Semantics) §15.4.5는 이를 정확히 정의합니다. “The 304 (Not Modified) status code indicates that a conditional GET or HEAD request has been received and would have resulted in a 200 (OK) response if it were not for the fact that the condition evaluated to false.” (번역) 「304(Not Modified) 상태 코드는 조건부 GET 또는 HEAD 요청을 받았으며 조건이 거짓으로 평가되지 않았다면 200(OK) 응답이 되었을 요청임을 나타냅니다.」 이것이 규범적인 실제 트리거입니다. 조건이 거짓으로 평가되어 원래 200이 되었을 조건부 GET/HEAD입니다. 쉽게 말해 클라이언트가 “변경된 경우에만 이 페이지를 보내 달라”고 요청했고, 서버가 변경되지 않았다고 판단해 본문 전송을 건너뜁니다. “두 번째 방문”은 요청이 조건부가 되는 일상적인 예(클라이언트가 이전 응답에서 저장한 검증자를 붙임)이지만, 규칙 자체는 아닙니다. 사양에는 이전 방문이 필요하다고 쓰여 있지 않고 조건부 요청만 요구합니다. Evidence for this claim RFC 9110 defines 304 Not Modified as the response to a conditional GET or HEAD when the selected representation has not changed and says the response cannot contain content. Scope: HTTP semantics for 304 conditional responses. Confidence: high · Verified: IETF: RFC 9110 §15.4.5 — 304 Not Modified

사양은 이 절에서 “redirecting”이라는 단어까지 사용합니다. “the server is therefore redirecting the client to make use of that stored representation as if it were the content of a 200 (OK) response” (번역) 「따라서 서버는 저장된 표현을 200(OK) 응답의 콘텐츠인 것처럼 사용하도록 클라이언트를 리디렉션합니다.」라고 하지만, 주의해서 읽어야 합니다. 다른 URL이 아니라 클라이언트 자신의 캐시로 되돌리는 것입니다. Location 헤더도 새 주소도 없습니다. 304가 “리디렉션인가”라는 혼란의 대부분은 이 한 문장에서 생깁니다. HTTP 의미에서 리디렉션이 아닙니다.

두 가지 규범적 사항도 중요합니다.

  • 본문은 절대 없습니다. RFC 9110은 “A 304 response is terminated by the end of the header section; it cannot contain content or trailers.” (번역) 「304 응답은 헤더 영역의 끝에서 종료되며 콘텐츠나 트레일러를 포함할 수 없습니다.」라고 합니다. 본문을 보내는 304는 사양 위반이며 일부 클라이언트는 잘못 처리할 수 있습니다. 이는 스타일 선호가 아니라 엄격한 규칙입니다.
  • 200과 같은 메타데이터를 전달합니다. 서버는 같은 요청에 대한 200(OK) 응답에 보냈을 다음 헤더 필드인 Content-Location, Date, ETag, Vary를 “MUST GENERATE”해야 하며, 해당되는 경우 Cache-ControlExpires도 보내야 합니다. 따라서 304는 페이로드를 제외한 200의 헤더입니다.
Evidence for this claim A 304 response terminates after the header section and cannot contain content or trailers. Scope: conditional GET and HEAD Confidence: high · Verified: RFC 9110 §15.4.5: 304 Not Modified

304의 실제 작동 방식: 조건부 요청

서버는 아무 예고 없이 304를 보내지 않습니다. 항상 조건부 요청, 즉 이전 응답에서 저장한 검증자를 붙여 클라이언트가 조건부로 만든 요청에 대한 응답입니다. 검증자는 두 가지입니다.

ETag와 If-None-Match

ETag(엔터티 태그)는 서버가 200 응답에 붙이는 불투명한 토큰입니다. URL의 정확한 표현에 대한 버전 지문이라고 생각하면 됩니다. 다음에 해당 URL을 요청할 때 클라이언트는 저장한 값을 If-None-Match 헤더로 돌려보냅니다. 서버가 비교했을 때 현재 ETag가 여전히 일치하면 변경되지 않은 것이므로 304를 반환합니다. 다르면 새 콘텐츠와 새 ETag가 포함된 새로운 200을 반환합니다.

Last-Modified와 If-Modified-Since

날짜 기반 대안입니다. 서버가 200Last-Modified 타임스탬프를 보냅니다. 다음에는 클라이언트가 이를 If-Modified-Since 헤더로 돌려보내고 서버가 날짜를 비교합니다. 해당 타임스탬프 이후 리소스가 변경되지 않았다면 304입니다. 더 단순하지만 타임스탬프의 정밀도만큼만 세밀하고, 정확한 HTTP 날짜 형식에 민감해 버그의 흔한 원인이 됩니다. 두 검증자가 모두 있으면 If-None-Match(ETag)가 If-Modified-Since보다 우선합니다.

강한 ETag와 약한 ETag

ETag강할 수도 있고 약할 수도 있으며, 그 차이가 중요합니다. MDN의 조건부 요청 지침에 따르면 “strong validation consists of guaranteeing that the resource is, byte to byte, identical to the one it is compared to.” (번역) 「강한 검증은 리소스가 비교 대상과 바이트 단위로 동일함을 보장하는 것입니다.」 약한 ETagW/ 접두사를 붙입니다(예: ETag: W/"abc123"). 약한 ETag는 의미론적 동등성만 주장합니다. MDN의 예처럼 “a page that would differ from another only by a different date in its footer, or different advertising, would be considered identical to the other with weak validation.” (번역) 「바닥글의 날짜나 광고만 달라지는 페이지는 약한 검증에서 다른 페이지와 동일한 것으로 간주됩니다.」 강한 ETag(접두사 없음)는 바이트 단위 일치가 필요한 범위 요청 등에 필요하고, 약한 ETag는 압축·공백·사소한 비실질적 차이로 전체 재요청을 강제하고 싶지 않을 때 유용합니다. 실무적 함정은 gzip/Brotli 재압축 때마다, 또는 로드 밸런싱된 서버마다 ETag가 바뀌면 불필요한 재크롤을 일으킨다는 것입니다. 강한지 약한지 의도적으로 선택하고 실제로 변경되지 않은 콘텐츠의 값은 안정적으로 유지하세요.

전체 핸드셰이크를 단계별로 보기

  1. 첫 요청 → 서버가 콘텐츠와 함께 200 OK, ETag 및/또는 Last-Modified를 반환합니다.
  2. 클라이언트가 저장 → 콘텐츠와 검증자를 저장합니다.
  3. 다음 요청 → 저장된 값과 함께 If-None-Match 및/또는 If-Modified-Since를 보냅니다.
  4. 서버가 결정 → 변경 없음: 본문 없는 304 Not Modified, 클라이언트는 캐시 재사용. 변경됨: 새 본문과 새 검증자가 포함된 200 OK. Evidence for this claim RFC 9111 defines validation as checking whether a stored response remains current, typically with a conditional request that can receive 304 Not Modified. Scope: HTTP cache validation; it does not create a Search ranking benefit. Confidence: high · Verified: IETF: RFC 9111 §4.3 — Validation

캐싱과 검증자를 크롤링 효율의 수단으로 더 깊이 다루고 싶다면, 즉 조건부 요청 전체와 크롤링 예산의 연결을 보고 싶다면 동반 주제를 참고하세요. 이 글은 상태 코드에 초점을 둔 관점입니다.

304와 SEO: 순위 효과는 없지만 실제 크롤링 효율 효과는 있음

전체 SEO 이야기는 다음과 같으며, 많은 블로그의 상투적인 설명보다 범위가 좁습니다. 304는 직접적인 순위 효과가 없습니다. 상태 코드가 크롤링과 색인 생성에 미치는 영향에 대한 Google의 자체 지침도 색인 효과를 제한합니다. Search가 URL 신호를 다시 계산할 수는 있지만, 그 밖에는 304가 페이지 색인 방식을 바꾸지 않습니다. Google은 이전 크롤링에서 이미 콘텐츠를 가지고 있으므로 304는 아무것도 바뀌지 않았음을 확인하고 보유한 것을 계속 사용하게 합니다. 304를 반환한다고 순위 보너스가 생기지는 않습니다.

304가 실제로 제공하는 것은 크롤링 효율을 간접적으로 개선할 수 있는 자원 절약입니다. Google의 2024년 12월 HTTP 캐싱 글은 대규모 사이트에서 로컬 캐싱이 크롤링 효율에 도움을 줄 수 있다고 설명합니다.

정확한 304 메커니즘에 대해 같은 글은 빈 본문이 중요한 이유를 명시합니다. 크롤러가 보낸 ETag가 “matches the current value the server generated, your server should return an HTTP 304 (Not modified) status code with no HTTP body” (번역) 「서버가 생성한 현재 값과 일치하면 서버는 HTTP 본문 없이 HTTP 304(Not modified) 상태 코드를 반환해야 합니다」. 또한 “no HTTP body”가 중요한 이유는 “your server doesn’t have to spend compute resources on actually generating content” 및 “doesn’t have to transfer the HTTP body”이기 때문입니다 (번역) 「서버가 콘텐츠를 실제로 생성하는 데 계산 자원을 쓸 필요가 없고 HTTP 본문을 전송할 필요도 없습니다」. 양쪽에서 계산과 대역폭을 절약합니다. Google이 downstream 이점을 표현하는 방식은 조건부입니다. 자원 절약이 크롤링 효율을 간접적으로 개선할 수 있다는 것입니다. 절약된 노력이 새 URL이나 업데이트된 URL로 자동 재배분된다는 약속이 아닙니다. 자원 절약 메커니즘으로 이해하되, 가능성은 있지만 보장되지 않는 파급 효과로 다루세요.

대규모 사이트에서 더 중요한 이유

페이지가 수백 개뿐이라면 이는 대체로 이론적인 문제입니다. Google은 어쨌든 사이트 전체를 편하게 크롤링할 수 있습니다. 규모가 커질수록 이점이 커집니다. URL이 수십만 또는 수백만 개이고 그중 많은 URL이 드물게 변경되는 사이트에서는 크롤러가 변경되지 않은 것을 다시 가져오지 않아 실질적인 이득이 생깁니다. Google의 글이 겨냥한 대상이 바로 이런 사이트이며, 정직한 설명은 이것입니다. 304를 소규모 사이트의 전술로 과장하지 마세요.

ETag 또는 Last-Modified, 그리고 “변경”의 기준

Google은 ETag를 기본 검증자로 권장합니다. Google은 ETag를 오류가 적은 기본 검증자로 권장합니다. 둘 다 설정해도 괜찮고 권장됩니다. Last-Modified를 사용한다면 날짜는 “must be formatted according to the HTTP standard” (번역) 「HTTP 표준에 따라 형식화되어야」 하며, Google이 권장하는 형식은 “요일, 일 월 연도 시:분:초 시간대 형식”입니다. 예: “Fri, 4 Sep 1998 19:15:56 GMT”. 그렇지 않으면 조용히 무시될 수 있습니다. Google은 크롤러가 재크롤링 시점을 판단하는 데 도움이 되도록 Cache-Controlmax-age 필드도 설정하라고 제안합니다.

Evidence for this claim Google's crawler guidance recommends ETag because its opaque value avoids date-formatting errors, while also allowing both ETag and Last-Modified; this is Google-specific operational advice, not a change to HTTP validator semantics. Scope: HTTP cache validation Confidence: high · Verified: Crawling December: HTTP caching

캐시를 무효화할 만큼 중요한 변경의 기준은 여러분이 정할 일이며, Google은 실질적인 변경에 한정하라고 조언합니다. “Our recommendation is that you require a cache refresh on significant changes to your content; if you only updated the copyright date at the bottom of your page, that’s probably not significant.” (번역) 「콘텐츠에 중대한 변경이 있을 때 캐시 새로고침을 요구하고, 페이지 하단의 저작권 날짜만 업데이트했다면 아마 중대한 변경이 아닐 것입니다.」

Googlebot과 Bingbot이 실제로 하는 일

모든 크롤러 요청이 조건부인 것은 아닙니다. Google의 크롤러 문서는 제공하는 제품에 따라 개별 Google 크롤러와 fetcher의 캐싱 지원이 다르다고 설명합니다. Googlebot은 Search를 위해 URL을 다시 크롤링할 때 캐싱을 지원하지만 일부 다른 Google fetcher는 특정 조건에서만 지원합니다. 따라서 헤더를 올바르게 구성해도 요청의 100%가 If-None-Match/If-Modified-Since를 포함할 것으로 기대하지 마세요. Bing도 마찬가지입니다. 조건부 요청은 Google만의 기능이 아닙니다. Bing 크롤러는 적어도 2008년 Live Search 블로그 글 이후 조건부 GET(If-Modified-Since와 가능한 경우 If-None-Match를 보내고 콘텐츠가 변경되지 않았을 때 304를 수락)을 지원해 왔지만, Bing은 Google의 2024년 글에 해당하는 최신 글을 발표하지 않았습니다. 메커니즘은 양쪽 엔진에 적용되는 일반적인 HTTP 동작으로 다루세요.

304 지원 구현 방법

  1. 200 응답에 검증자를 보냅니다. 서버, CDN 또는 앱이 정상적인 200 응답에 ETag(권장) 및/또는 올바른 형식의 Last-Modified 헤더를 붙이도록 구성합니다. 많은 서버와 프레임워크가 정적 파일에는 ETag를 자동으로 처리하지만, 동적 응답은 보통 직접 활성화해야 합니다.
  2. 돌아오는 조건부 헤더를 처리합니다. 요청에 If-None-Match/If-Modified-Since가 있으면 현재 검증자와 비교하고, 여전히 일치하면 본문 없이 304를, 일치하지 않으면 새 200을 반환합니다. 정적 파일 서버는 이를 자동 처리하는 경우가 많지만 앱 라우트와 엣지 워커는 연결하지 않으면 처리하지 않는 경우가 많습니다.
  3. “변경됨”의 의미를 결정하고 실제로 변경되지 않은 콘텐츠의 ETag를 안정적으로 유지합니다. 재압축이나 서버별 차이로 불필요하게 값이 바뀌게 하지 마세요.
  4. 고전적인 잘못된 설정을 살핍니다.
    • 항상 200 — 검증자를 전혀 보내지 않아 요청이 조건부가 되지 않고 효율 이점을 얻지 못합니다.
    • 불안정한 ETag — 콘텐츠가 바뀌지 않아도 값이 바뀌어 계속 다시 가져오게 합니다(로드 밸런서, 재압축).
    • 오래된 304 — 가장 위험합니다. 콘텐츠가 실제로 바뀐 뒤에도 서버가 304(또는 변경되지 않은 ETag)를 계속 반환해 크롤러와 캐시가 업데이트를 받지 못합니다. 304의 본질적 결함이 아니라 로그 분석에서 잡아야 할 버그입니다.

304와 다른 상태 코드 비교

304와 301 / 302 / 307 / 308

이들이 실제 리디렉션입니다. 301/308(영구) 또는 302/307(임시)은 Location 헤더를 포함하고 클라이언트를 다른 URL로 이동시킵니다. 또한 301/308은 정규화 신호를 전달합니다. 304에는 Location이 없고 아무도 이동시키지 않으며 순위 신호도 전달하지 않습니다. 숫자로는 같은 3xx 계열이지만 역할은 완전히 다릅니다. 코드별 리디렉션 세부 내용은 각 글에 있습니다(301 redirect 글과 리디렉션 하위 허브 참고).

304와 204 No Content

둘 다 본문이 없지만 이유는 완전히 다릅니다. 204 No Content는 서버가 실제로 보낼 것이 없기 때문에 의도적으로 빈 본문을 보내는 2xx 성공입니다. 성공적인 API DELETE/PUT나 분석 비콘이 예입니다. 304도 본문을 보내지 않지만 “이미 가지고 있고 여전히 유효하다”는 뜻이지 보낼 것이 없다는 뜻이 아닙니다. 혼동하지 마세요. 페이지 URL의 204는 색인할 콘텐츠가 없어 소프트 404처럼 취급될 수 있지만, 304는 Google이 이미 가진 콘텐츠의 유효성을 확인합니다. 204 No Content 글에서 해당 코드를 자세히 설명합니다.

304에 관한 흔한 오해

  1. “304는 리디렉션이다.” Location 헤더가 없고 아무도 이동하지 않습니다. 클라이언트는 자신의 캐시 사본을 재사용합니다. RFC 9110의 “저장된 표현을 사용하도록 클라이언트를 리디렉션”한다는 말은 다른 URL이 아니라 캐시를 가리킵니다.
  2. “304는 고쳐야 할 오류다.” 작동하는 조건부 요청 설정이 의도한 올바른 결과입니다. 크롤링이나 DevTools에서 304를 보는 것은 캐싱이 작동한다는 신호이며 SERP에서 가장 흔한 오해입니다.
  3. “304가 순위에 도움을 준다.” 직접적인 순위 효과는 없고 Google은 색인 효과도 제한합니다. Search가 URL 신호를 다시 계산할 수는 있지만, 그 밖에는 색인 방식을 바꾸지 않습니다. 이점은 Google이 말하듯 매우 큰 사이트에서 크롤링 효율을 간접적으로 높일 수 있는 자원 절약이며 순위 신호도, 절약된 노력이 다른 URL로 이동한다는 보장도 아닙니다.
  4. “서버가 304를 반환하면 Google이 오래된 콘텐츠를 영원히 사용한다.” 검증자가 일치하는 동안에만 304가 발생합니다. 콘텐츠가 실제로 바뀌는 즉시 올바른 서버는 새 검증자가 포함된 새로운 200을 반환합니다. 진짜 위험은 콘텐츠 변경 후에도 304를 반환하는 잘못 구성된 서버이며, 이는 304의 속성이 아니라 버그입니다. Evidence for this claim RFC 9111 defines validation as checking whether a stored response remains current, typically with a conditional request that can receive 304 Not Modified. Scope: HTTP cache validation; it does not create a Search ranking benefit. Confidence: high · Verified: IETF: RFC 9111 §4.3 — Validation
  5. “ETag와 Last-Modified는 서로 바꿔 쓸 수 있다.” 둘 다 검증자이지만 Last-Modified는 날짜 형식에 민감하고 타임스탬프 정밀도만큼만 세밀한 반면, ETag는 불투명하고 정확합니다. 다만 부주의하게 구현하면 서버 간 또는 재압축 후 값이 어색하게 달라질 수 있습니다. Google은 ETag를 기본으로 권장하며 가능하면 둘 다 사용하라고 합니다.

자주 묻는 질문

HTTP 304는 오류인가요? 아닙니다. 캐싱이 작동한다는 성공 신호입니다. 클라이언트의 캐시 사본이 여전히 유효하다는 뜻입니다.

304 Not Modified는 리디렉션인가요? 아닙니다. 번호상 3xx 계열이지만 Location 헤더가 없고 클라이언트를 새 URL로 이동시키지 않습니다.

304가 SEO나 순위에 도움이 되나요? 직접적인 순위 효과는 없고 Google이 URL 신호를 다시 계산할 수 있는 것 외의 색인 효과도 없습니다. 크롤러가 변경되지 않은 페이지를 건너뛰게 해 대역폭과 계산을 절약하며, Google은 대규모 사이트에서 이것이 크롤링 효율을 간접적으로 높일 수 있다고 말합니다.

ETag와 Last-Modified의 차이는 무엇인가요? ETagIf-None-Match로 비교하는 불투명한 버전 지문이고, Last-ModifiedIf-Modified-Since로 비교하는 타임스탬프입니다. Google은 오류가 적은 ETag를 권장합니다.

약한 ETag와 강한 ETag는 무엇인가요? 강한 ETag는 바이트가 동일한 콘텐츠임을 주장합니다. W/가 앞에 붙은 약한 ETag는 의미론적 동등성을 주장하며 압축이나 바닥글 날짜 변경 같은 사소한 차이를 허용합니다.

로그나 크롤링 보고서에서 304가 보이는 이유는 무엇인가요? 클라이언트가 조건부 요청을 보내고 서버가 콘텐츠가 변경되지 않았음을 올바르게 확인하기 때문입니다. 예상되는 좋은 동작입니다.

서버가 304를 올바르게 반환하게 하려면 어떻게 하나요? 200ETag/Last-Modified를 보내고, 다음 요청에서 If-None-Match/If-Modified-Since를 처리해 검증자가 여전히 일치할 때 본문 없는 304를 반환합니다.

304와 204의 차이는 무엇인가요? 둘 다 본문이 없습니다. 204는 보낼 것이 없기 때문이고, 304는 여전히 유효한 사본을 이미 가지고 있기 때문입니다.

Googlebot은 모든 요청에 조건부 헤더를 보내나요? 아닙니다. 크롤러별 캐싱 지원이 다르므로 헤더가 구성되어 있어도 모든 요청이 조건부인 것은 아닙니다.

304 응답에 본문이 있을 수 있나요? 없습니다. RFC 9110에 따르면 “it cannot contain content or trailers.” (번역) 「콘텐츠나 트레일러를 포함할 수 없습니다.」 본문이 있는 304는 사양 위반입니다.

Evidence for this claim A 304 response terminates after the header section and cannot contain content or trailers. Scope: conditional GET and HEAD Confidence: high · Verified: RFC 9110 §15.4.5: 304 Not Modified

“Weekday, DD Mon YYYY HH:MM:SS Timezone,” (번역) 「Last-Modified에 사용할 정확한 HTTP 날짜 형식입니다.」 “If my server returns 304, Google will use stale content forever.” (번역) 「검증자가 일치하는 동안에만 304가 반환되며, 콘텐츠가 바뀌면 새 200 응답이 와야 합니다.」 “We strongly recommend using ETag because it’s less prone to errors and mistakes (the value is not structured unlike the Last-Modified value).” (번역) 「Last-Modified보다 오류와 실수가 적은 ETag를 기본 검증자로 강력히 권장한다는 뜻입니다.」

Try it live

This is a real endpoint on this site — not a simulation. Hit it from the button, open it in a new tab, or curl -i it from your terminal, and the server answers with the actual status code this article is about.

Open in new tab ↗

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.