4个版本
使用旧的Rust 2015
0.1.3 | 2018年4月4日 |
---|---|
0.1.2 | 2018年4月4日 |
0.1.1 | 2018年4月4日 |
0.1.0 | 2018年4月4日 |
#28 in #follow
每月28次下载
18KB
341 行
follow-redirects
hyper的HTTP重定向扩展。
示例
extern crate hyper;
extern crate follow_redirects;
// 1. import the extension trait
use follow_redirects::ClientExt;
// ...
// 2. create a standard hyper client
let client = hyper::Client::new(&handle);
// ...
// 3. make a request that will follow redirects
let url = "http://docs.rs/hyper".parse().unwrap();
let future = client.follow_redirects().get(url);
lib.rs
:
hyper的HTTP重定向扩展。
行为和限制
支持的重定向
此crate支持HTTP/1.1规范中定义的所有5种重定向样式。这包括“永久”重定向(状态码 301 和
308
)以及“临时”重定向(状态码 302、
303 和
307
)。
从服务器收到 303 See Other
响应将导致客户端更改请求方法为 GET
,并在重定向之前丢弃请求正文。
Location头
客户端使用 Location
HTTP头来确定下一个URL以跟随重定向。支持相对URL(没有主机名)以及绝对URL(包括方案和主机名)。
当服务器响应中缺少 Location
头,但状态码指示重定向时,客户端将向调用者返回响应。您可以通过检查返回响应的状态码和头来检测这种情况。
缓冲
为了能够在除了 303 See Other
之外的重定向中重新播放请求正文,客户端将在向服务器发出第一个请求之前在内存中缓冲请求正文。
重定向限制
为了避免跟随无限的重定向链,客户端有一个限制,即它将跟随的最大重定向次数,直到放弃。
当达到最大重定向次数时,客户端将简单地向调用者返回最后一个响应。您可以通过检查返回响应的状态码来检测这种情况。
安全考虑
为了保护请求中传递的认证或会话信息的机密性,当客户端跟随到不同主机和端口的重定向时,将删除认证和cookie头。
重定向到相同的域名和端口,但不同的路径将保留会话信息。
示例
extern crate hyper;
extern crate follow_redirects;
// 1. import the extension trait
use follow_redirects::ClientExt;
// ...
// 2. create a standard hyper client
let client = hyper::Client::new(&handle);
// ...
// 3. make a request that will follow redirects
let url = "http://docs.rs/hyper".parse().unwrap();
let future = client.follow_redirects().get(url);
依赖项
~9MB
~153K SLoC