计算机网络2-HTTP部分的题目,是我根据Java Guide的面试突击版本V3.0再整理出来的,其中,我选择了一些比较重要的问题,并重新做出相应回答,并添加了一些比较重要的问题,希望对大家起到一定的帮助。
系列文章:
URI和URL的区别
URI是统一资源标识符,可以理解为一个抽象的概念或者功能需求
URL是统一资源定位符,URL是URI的一种实现,用定位的方式实现唯一标识的功能
互联网中有许多的资源,如何获取一个具体的资源呢?
URI定义了一种获取资源的方式:如果想要获取资源,就需要给每个资源定义一种唯一的标识符,然后按照定义的唯一标识符去获取资源。URL代表了URI概念的一种具体实现。
HTTP方法
HTTP的首部的分类
说说你对cookie的认识
cookie中保存了 服务器为了识别用户身份产生的一些数据,存储在浏览器本地。
如果是同源的请求,浏览器会自动设置cookie请求头到请求中
同源的定义:URL中 协议,域名,端口都相同的才是同源
url | 说明 | 是否跨域 |
---|---|---|
http://www.cnblogs.com/a.js http://www.a.com/b.js |
域名不同 | 是 |
http://www.a.com/lab/a.js http://www.a.com/script/b.js |
同一域名下不同文件夹下的不同文件 | 否 |
http://www.a.com:8000/a.js http://www.a.com/b.js |
不同端口 | 是 |
http://www.a.com/a.js https://www.a.com/b.js |
不同协议 | 是 |
http://www.a.com/a.js http://70.32.92.74/b.js |
域名和域名对应的ip | 是 |
http://www.a.com/a.js http://script.a.com/b.js |
三级域名不同 | 是 |
你了解跨域吗?跨域的请求是如何处理的?
上面问题4中介绍过同源的定义,只要不满足这个要求即为跨域。
现在的浏览器都实现了CORS标准,在CORS标准中,当发起一个跨域请求时:
如果是简单请求(GET HEAD POST 并且请求头中不能超出规定的几个字段),会在请求中加入一个Origin字段,Origin字段用来说明,本次请求的来源域(协议主机端口)
GET /cors HTTP/1.1
Origin: http://api.bob.com
Host: api.alice.com
Accept-Language: en-US
Connection: keep-alive
User-Agent: Mozilla/5.0...
如果是非简单请求(简单请求之外的请求),浏览器会在请求之间加入一个预检请求,预检请求是一个OPTIONS请求.
OPTIONS /cors HTTP/1.1
Origin: http://api.bob.com
Access-Control-Request-Method: PUT //必须字段,列出请求会使用哪些方法
Access-Control-Request-Headers: X-Custom-Header //可选字段,列出请求会额外发送的请求头
Host: api.alice.com
Accept-Language: en-US
Connection: keep-alive
User-Agent: Mozilla/5.0...
如果检查通过,可以访问,服务端会响应一些CORS字段;如果未通过,则会发送一个200响应,不包含任何CORS字段,浏览器发现后会抛出一个错误,然后用户可以通过XHR中的onerror回调函数捕获错误。
CORS字段介绍:跨域资源共享 CORS 详解
Session是什么?如何使用Session
HttpSession是javax.servlet.http中定义的接口,用来在服务端存储用户的信息,目的还是为了保持状态。
生成的SessionID可以存储在cookie中或者通过URL传递过来
HTTP 1.0和HTTP 1.1的主要区别是什么?
Token机制和Session机制的区别?
token的核心是自含义,也就是说一旦成功登录,服务器返回给用户的token信息就包含了用户身份的信息(比如user_id),服务器不需要存储相关信息,当用户拿着token访问URL时,通过解密token就可以知道用户是谁。另外,token中还可以包含登录的时间戳,服务端在解密时同样可以判断该token是否过期。
未完待续...
原文:https://www.cnblogs.com/ging/p/13447742.html