304 는 에러가 아닙니다.정확하게 'HTTP status code' (상태코드) 라고 해야합니다.
http://www.faqs.org/rfcs/rfc2616.htmlRFC 2616 에 잘 언급되어 있습니다
.http://linuxchannel.net/docs/Apache_Quick_Reference_Card.html이 문서의 끝부분 즈음에 304를 'Not modified'라고 설명되어있는데,
말그대로 '변경사항이 없음'을 말합니다.(시간 비교)이것을 이해하기 위해서는 클라이언트와 서버간의 의사소통을 약간이라도 이해하고 있어야
합니다.즉,클라이언트(대부분 '웹브라우저'라고도 함)가 웹서버에게 어떤 파일을요청할때,자신의 HDD 공간에 있는(cached) 파일의 정보,
그러니깐마지막으로 변경된 시간이나 파일크기 등등의 정보를 포함해서서버에게 요청합니다.(요청헤더에 붙음)서버는클라이언트가 보낸 요청헤더 정보를 보고, 자신의 웹서버에 있는파일 정보와 비교합니다.이때 파일 변경시간과 크기등이 서로 같으면 서버는 304 로 응답합니다.즉 이것은 클라이언트에 있는 파일과 서버에 있는 파일이 서로같으므로 클라이언트 HDD 에 있는 파일을 사용하라 라는 의미이고실제로 파일 전송은 이루어지질 않습니다.반대로파일 변경시간이 서로 틀리거나 파일크기등등이 서로 맞질않으면이때는 200 응답을 내고 서버는 요청한 파일을 클라이언트에게 전달합니다.클라이언트는 200 응답코드를 받았으므로 기존의 파일이 있다면삭제하고 새로운 파일로 대체 또는 캐시하게 됩니다.대부분 동적인 파일(PHP)은 항상 200 응답을 냅니다.반면 정적인 HTML 이나 gif, jpg, png, mp3, mpg, asf 등등은거의 대부분 304로 응답합니다.
HTTP 1.1 status codes [TOP]
100 : Continue
101 : Switching protocols
200 : OK, 에러없이 전송 성공
201 : Created, POST 명령 실행 및 성공
202 : Accepted, 서버가 클라이언트 명령을 받음
203 : Non-authoritative information, 서버가 클라이언트 요구 중 일부 만 전송
204 : No content, 클라언트 요구을 처리했으나 전송할 데이터가 없음
205 : Reset content
206 : Partial content
300 : Multiple choices, 최근에 옮겨진 데이터를 요청
301 : Moved permanently, 요구한 데이터를 변경된 임시 URL에서 찾았음
302 : Moved temporarily, 요구한 데이터가 변경된 URL에 있음을 명시
303 : See other, 요구한 데이터를 변경하지 않았기 때문에 문제가 있음
304 : Not modified
305 : Use proxy
400 : Bad request, 클라이언트의 잘못된 요청으로 처리할 수 없음
401 : Unauthorized, 클라이언트의 인증 실패
402 : Payment required, 예약됨
403 : Forbidden, 접근이 거부된 문서를 요청함
404 : Not found, 문서를 찾을 수 없음
405 : Method not allowed, 리소스를 허용안함
406 : Not acceptable, 허용할 수 없음
407 : Proxy authentication required, 프록시 인증 필요
408 : Request timeout, 요청시간이 지남
409 : Conflict
410 : Gone, 영구적으로 사용할 수 없음
411 : Length required
412 : Precondition failed, 전체조건 실패
413 : Request entity too large,
414 : Request-URI too long, URL이 너무 김
415 : Unsupported media type
500 : Internal server error, 내부서버 오류(잘못된 스크립트 실행시)
501 : Not implemented, 클라이언트에서 서버가 수행할 수 없는 행동을 요구함
502 : Bad gateway, 서버의 과부하 상태
503 : Service unavailable, 외부 서비스가 죽었거나 현재 멈춤 상태
504 : Gateway timeout
505 : HTTP version not supported