服务器接收到expect: 100-continue请求过程,是几次http请求?

服务端接收到header 是expect:100-continue,进行验证信息,判断是否可以通过验证
如果可以通过验证,返回status 100
如果通过了是不是客户端发送的是第二次http请求?还是继续这次http请求?
这种判断,服务端程序该怎么写呀,如果是两次,http协议是无状态的,怎么将两次请求联系到一起?

阅读 4.5k
1 个回答

HTTP无状态决定了本质上无法继续上次的HTTP请求。

首先,客户端先发送了一个请求,这个请求的header中包含了一个属性expect: 100-continue。这种情况一般出现于上传大容量body或者是需要验证的时候。这时服务器会读取请求的header并返回一个100 continue的响应,如果服务器可以提供这项服务的话。客户端再将http请求发送回去。然后服务器会读取请求的body并且在成功后返回200状态码。

如果出于验证的目的发出expect:100-continue,那么你只需在认证通过之后的下一次请求中携带上你的认证信息(authorization等等)即可。

如果是出于询问服务器是否能够完成自己的请求,比如是不是能够向它发送一个类型为video/mp4的大文件时,则第二次正常发送body为这个文件的http请求即可。这里使用expect:100-continue的原因在于避免大文件传送失败带来的带宽浪费。第一次发送的询问请求可以只有一个header,如果服务器拒绝提供这个服务,则无需继续发送大文件。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题