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次下载

MIT许可

18KB
341

follow-redirects

hyper的HTTP重定向扩展。

文档

Build Status crates.io

示例

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种重定向样式。这包括“永久”重定向(状态码 301308)以及“临时”重定向(状态码 302303307)。

从服务器收到 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