读书笔记-java网络编程-6URL和URI-HTTP协议和cookie的java实现

46 篇文章 0 订阅
17 篇文章 0 订阅
本文是关于Java网络编程的读书笔记,主要介绍了HTTP协议的概述、Keep-Alive、方法(GET, PUT, DELETE, POST等),重点讲解了Cookie的工作原理和管理,包括CookieManager和CookieStore的使用,探讨了Cookie的安全性和持久化存储。" 112775087,10553269,图像分类数据集大盘点:从医学到农业,"['机器学习', '图像识别', '数据科学', '计算机视觉', '数据集资源']
摘要由CSDN通过智能技术生成

6 HTTP协议

这章内容大部分比较浅显。这里抽取一部分不太熟悉的说下:

6.1 HTTP协议

6.1.1 概述

6.1.2 Keep-Alive

6.2 HTTP方法

  • get:
    可以获取一个资源的表示。
    get没有副作用,如果失败可以重新获取。
    通常get的输出会缓存。可以通过首部来控制
    可以对get请求加书签。也可以预取get请求。但是其他方法不可以。
    如果没有明确的用户动作,好的浏览器和爬虫不会post

  • put:
    将资源的一个表示上传到已知URL的服务器。
    这个操作有副作用,但是有幂等性,也就是说可以重复操作。

  • delete:
    从一个指定URL删除一个资源。
    这个操作有副作用,但是有幂等性,也就是说可以重复操作。

  • post:
    最通用的做法。也将资源的一个表示上传到已知URL的一个服务器,但是没有指定服务器如何处理这个新提供的资源。
    用于不能重复的不安全的操作,如完成一个交易。

除了以上的4个方法,特殊情况下还有一些其他的方法:

  • head:
    几乎等同于get,但是只返回资源的首部

java还支持options和trace.

  • options:
    运行客户端新闻服务器如何处理一个指定的资源

  • trace:
    会显示客户端请求来进行调试,特别是代理服务器工作不正常的时候。

6.3 请求主题

get方法获取URL所标识的一个资源的一个表示。用get从服务器获取的资源的具体位置由路径和查询字符串的不同部分指定。不同的路径和查询字符串如何映射到不同的资源要由服务器来确定。
URL不关心这些。只要它知道URL,就能从哪里下载。

POST和PUT要更为复杂:
除了提供路径和查询字符串,还要提供资源的表示。
资源表示在请求主题中发送,放在首部后面

网站使用Cookie用来在连接之间储存持久的客户端状态。
cookie在请求和响应的HTTP首部,从服务器传递到客户端,再从客户端传回服务器。
服务器使用cookie来指示会话ID、购物车内容、登录凭据、用户首选项等。

cookie只能是非空白字符的ASCII文本,不能包含逗号和分号。

只要服务器不重用cookie,这会使它在多个HTTP连接上跟踪各个用户和会话。

cookie通常用简单的name=value对存储,同样也有多个属性来控制他们的作用域,包括过期日期、路径、域、端口、版本、和安全选项。

默认情况下,cookie来自哪个服务器就应用于哪个服务器,网站也可以指示一个cookie应用于整个子域,而不是最初的服务器。不过服务器只能为她直接所属的域设置cookie。有些网站把一个域的一个图片或其他内容嵌入进一个页面中,从而绕过这个限制。所嵌入内容设置的cookie称位第三方cookie。而很多用户会阻塞所有第三方cookie,(出于保密的原因)一些web浏览器也开始默认阻塞这些第三方cookie

cookie作用于还受到路径的限制,所有会返回到服务器上的某些目录。而不是全部。默认作用域是最初的URL和所有子目录。

cookie属性顺序无关,用,分隔,名字和值放在最前面。

通过将expires属性设置为:Wdy,DD-Mon-YYYY HH:MM:SS GMT形式的一个日期,可以设置cookie在某个时间点过期。
Max-Age属性可以设置cookie经过一定秒数后过期。
cookie可能包含敏感性强,需要使用https代替http,不论表示什么,每个cookie都有一个没有值的secure属性。
cookie可以通过设置httponly来告诉浏览器只通过http和https返回提高安全性。

6.5 CookieManger

java 5 有一个抽象类java.net.CookieHandler。它定义了存储和获取cookie的一个API
java 6 增加了一个可以具体使用的子类java.net.CookieManager。
默认情况下cookie是关闭的。需要

CookieManager manager = new CookieManager();
CookieHandler.setDefault(manager);

通过CookiePolicy:
CookiePolicy.ACCEPT_ALL:接受所有cookie
CookiePolicy.ACCEPT_NONE:不接受任何cookie
CookiePolicy.ACCEPT_ORIGINAL_SERVER:接受第一方cookie

通过覆盖shouldAccept方法实现更高粒度的控制。

6.6 CookieStore

CookieStore store = manager.getCooieStore();

一个应用退出时,可以把cookie库保存在磁盘上,下次启动时在加载这些cookie。

CookieStore允许增加、删除和列出cookie。使你能控制正常HTTP请求和响应流之外发送的cookie。

每个cookie都可以封装在HttpCookie对象中,它提供了一些方法来检测cookie属性。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值