http 소개http http의 요청 부분 요청의 기본 구조요청 라인자세한 설명 HTTP 요청 헤더Http 자세한 답변http 응답의 기본 구조상태 표시줄http 응답 헤더Expires, Pragma, Cache-Control에 대한 자세한 설명 캐시하지 않도록 설정Expires, Pragma, Cache-Control 설정 캐시 시간 지정 HTTP 요청 세부정보——일반 정보 헤더
http 프로토콜은 tcp/ip 프로토콜을 기반으로 합니다
http 프로토콜 호출 super Text Transfer Protocol( HTTP, 하이퍼텍스트 전송 프로토콜 )
http 프로토콜 버전 1.0 1.1 2.0
http 1.0 짧은 연결이 되고, http 1.1을 긴 연결이라고 합니다
길고 짧은 것은 연결 시간이 1.1 30초로 긴 것을 의미합니다. 짧은 연결은 데이터 전송 후 즉시 연결이 끊어집니다.
Http는 가장 기본적인 서버와 상호 작용하는 다양한 방법을 정의합니다. 메소드에는 GET, POST, PUT, DELETE의 4가지 유형이 있습니다. URL의 전체 이름은 리소스 설명자(Resource Descriptor)라고 생각하면 됩니다. 네트워크의 리소스를 설명하는 데 사용되는 URL 주소와 HTTP의 GET, POST, PUT 및 DELETE는 이 리소스를 확인하고 수정하는 데 해당합니다. . 4개의 작업을 추가하고 삭제합니다. 이 시점에서 모든 사람은 일반적으로 GET은 리소스 정보를 얻거나 쿼리하는 데 사용되는 반면 POST는 일반적으로 리소스 정보를 업데이트하는 데 사용됩니다.
메시지 헤더
빈 줄
내용
Request line
일반적으로 사용되는 방법은 post, get
차이점은 다음과 같습니다. 게시하고 받기:
GET은 URL 또는 쿠키를 사용하여 매개변수를 전달합니다. 그리고 POST는 데이터를 BODY에 넣습니다. GET URL에는 길이 제한이 있지만 POST 데이터는 매우 클 수 있습니다. POST는 주소 표시줄에 데이터가 표시되지 않기 때문에 GET보다 더 안전합니다. Accept: 서버에 브라우저에서 허용되는 MIME 유형을 허용할 수 있는 파일 형식을 알려줍니다. Accept-Charset: 허용되는 파일 형식 브라우저 문자 집합 인코딩 Accept-Encoding: gzip, 압축과 같은 특정 형식의 압축 데이터를 허용할 수 있습니다. 브라우저가 디코딩할 수 있는 데이터 인코딩 방법 Accept-Langage: 브라우저가 지원하는 언어 Host: 내가 찾고 있는 호스트가 누구인지 나타냅니다 If-Wodified-Since: 요청한 파일의 시간이 포함된 로컬 캐시에 요청할 파일이 있는지 서버에 알립니다. // 서버는 이 요청을 받고 시간을 비교하여 파일이 요청한 파일인지 확인합니다. 브라우저가 변경되었습니다. 변경 사항이 발생하면 새 파일이 브라우저로 전송됩니다. 데이터는 변경 없이 다시 전송되지 않습니다. //참고: 요청한 콘텐츠가 지정된 날짜 이후에 수정된 경우에만 반환되며, 그렇지 않으면 304"Not이 반환됩니다.
Modified" 응답. Referer: 내가 어디에서 왔는지 서버에 알려줍니다. 이 메시지 헤더는 종종 핫링크를 방지하는 데 사용됩니다. 핫링크를 방지하는 방법에 대한 개인적인 이해: 핫링크(Hotlinking): 핫링크란 서비스 제공자 자체가 서비스를 제공하지 않는, 기술적 수단을 통해 최종 사용자에게 유익한 다른 인터페이스(예: 광고)를 우회하고, 자신의 웹사이트에서 다른 서비스 제공자의 서비스를 최종 사용자에게 직접 제공하는 콘텐츠를 말합니다. , 수혜자는 리소스를 제공하지 않거나 매우 적은 양의 리소스를 제공하는 반면, 추천자의 가치는 연결을 클릭할 때 발생합니다. Referer.startWith("internal path");
User-Agent: 서버, 브라우저 커널에 알려줍니다. 헤더 정보 Connection: 서블릿이 여기의 값을 "Keep-Alive"로 확인하거나 요청이 HTTP 1.1을 사용하고 있음을 확인하는 경우(HTTP 1.1은 영구 연결을 수행함)를 나타냅니다. 기본값), 페이지에 여러 요소(예: 애플릿, 이미지)가 포함되어 있는 경우 지속적인 연결을 활용하고 다운로드 시간을 크게 줄일 수 있습니다. 이를 위해서는 Content-Length 헤더를 보내려면 서블릿이 있어야 합니다. , 가장 간단한 구현 방법은 다음과 같습니다. 먼저 내용을 작성합니다.
ByteArrayOutputStream을 사용하여 실제로 내용을 쓰기 전에 크기를 계산합니다. 날짜: 브라우저가 http 요청을 보낸 시간입니다. Content-Length: 요청 메시지 본문의 길이를 나타냅니다. UA-Pixels, UA-Color, UA-OS, UA-CPU: 일부 버전의 IE 브라우저에서 전송되는 비표준 요청 헤더로 화면 크기, 색상 깊이, 운영 체제 및 CPU 유형을 나타냅니다. 상태 줄 여러 메시지 헤더 한 줄 엔터티 콘텐츠
형식: http 버전 번호 상태 코드 이유 설명719f572dc95af346278bdd6251cfc5d3 예: HTTP /1.1 0 알겠습니다 상태 코드는 요청에 대한 서버의 처리 결과를 나타내는 데 사용됩니다. 3차원 십진수입니다. 응답 상태 코드는 5가지 범주로 구분됩니다.
Location:让浏览器重新定位到 指定的 URL Server:告诉浏览器 服务器的类型 Content-Encoding:服务端能够发送压缩编码类型 Content-Length: 服务器端发送的压缩数据的长度 Content-Langage:服务端发送的语言类型 Content-Type:服务端发送的类型及采用的编码方式 Last-Modified:服务端对该资源最后的修改(更新)时间 Refresh:服务端要求浏览器在指定的时间,刷新,然后访问指定的页面路径 Content-Disposition:attachmen;filename=aaa.zip 服务端要求客户端一下载文件的方式打开该文件,即告诉浏览器有文件需要下载 Transfer-Encoding:传送数据到客户端的方式 Set-Cookie:服务端发送到客户端的暂存数据 Cache-Control:告诉浏览器如何缓存页面数据 Expires:告诉浏览器如何缓存页面数据 参数 -1 不缓存 Pragma:告诉浏览器如何缓存页面数据 Connection:维护客户端和服务端的连接关系 是否保持连接 Date:服务端响应客户端的时间
通用信息头指既能用于请求,又能用于响应的一些消息头 Cache-Control:no-cache Pragma:no-cache Connection:close/Keep-Alive Date:Tue,。。。HTTP 요청 헤더에 대한 자세한 설명
public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{ // 防止乱码 response.setContentType("text/html;charset=utf-8"); // 获取输出流 PrintWriter out = response.getWriter(); // 获取用户浏览器 Referer String referer = request.getHeader("Referer"); if(referer == null || referer.startsWith("http://localhost:8080/本地内部用户web应用路径")){ response.sendRedirect("其他非真正资源网页"); return; }else{ } // 内部资源文件 。。。。。。。。。。。 }
Http 응답 세부정보
http 응답의 기본 구조
상태 줄
상태 코드
의미
100~199
요청이 성공적으로 수신되었음을 나타내며 클라이언트가 다음 요청을 계속 제출해야 함을 나타냅니다. 전체 처리 프로세스 완료 요청
200~299
은 요청이 성공적으로 수신되어 전체 처리 프로세스가 완료되었음을 나타냅니다. 일반적으로 사용되는 200
300~399
요청을 완료하려면 클라이언트가 요청을 더욱 구체화해야 합니다. 예를 들어 요청한 리소스가 일반적으로 사용되는 새 주소로 이동되었습니다. 302, 307
400~499
클라이언트의 요청에 오류가 있습니다. 자주 사용하는 404
500~599
서버측에서 에러가 발생했습니다. 자주 사용하는 500
http 响应消息头详解
Expires、Pragma、Cache-Control 设置不缓存
// 指定该页面不缓存 ie浏览器内核response.setDateHeader("Expires",-1);// 兼容设置response.setHeader("Cache-Control","no-cache");response.setHeader("Pragma","no-cache");
Expires、Pragma、Cache-Control 设置 指定缓存时间
// 指定该页面缓存指定时间 ie浏览器内核response.setDateHeader("Expires",System.currentTimeMillis()*3600*1000*24;
HTTP 请求的细节————通用信息头
위 내용은 HTTP 프로토콜에 대한 심층 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!