Request 表示一个请求类,需要通过实例化来生成一个请求对象。通过该对象可以描述一个 HTTP 请求中的请求(一般含有请求头和请求体)。既然是用来描述请求对象,那么该请求对象应该具有修改请求头(Headers)和请求体(Body)的方式。
构造函数
const myRequest = new Request(input[, init]);
- input:定义你想要 fetch 的资源。可以是下面两者之一:
 
- 一个直接包含你希望 fetch 的资源的 URL 的 USVString。
 - 一个 Request 对象。请注意以下行为更新,以在保留安全性的同时使构造函数不太可能引发异常:
- 如果此对象存在于构造函数调用的另一个起源上,则将除去Request.referrer(en-US)。
 - 如果此对象的导航为 Request.mode,则mode将转换为same-origin。
 
 
- init 可选:一个可选对象,包含希望被包括到请求中的各种自定义选项。可用的选项如下:
 
method: 请求的方法,例如:GET, POST。headers:任何你想加到请求中的头,其被放在 Headers 对象或内部值为 ByteString 的对象字面量中。body: 任何你想加到请求中的body,可以是 Blob, BufferSource(en-US), FormData, URLSearchParams, USVString,或 ReadableStream 对象。注意GET 和 HEAD 请求没有 body。mode: 请求的模式, 比如 cors, no-cors, same-origin, 或 navigate。默认值为 cors。credentials: 想要在请求中使用的 omit, same-origin, 或 include。默认值应该为 omit。- 但在 Chrome 中,Chrome 47 之前的版本默认值为 same-origin ,自Chrome 47起,默认值为include。
 
cache: 请求中想要使用的 cache moderedirect: 对重定向处理的模式: follow, error, or manual。在Chrome中,Chrome 47 之前的版本默认值为 manual ,自 Chrome 47 起,默认值为follow。referrer: 一个指定了no-referrer, client, 或一个 URL的 USVString 。默认值是about:client。integrity: 包括请求的 subresource integrity 值实例的属性
mode
request.mode表示的是一个请求时否使用 CORS,还是使用严格同源模式它是一个
RequestMode枚举类型,可取的值有navigate,same-origin,no-cors,cors- 当处于跨域情况下,你应当设置为 
cors - 该值的默认值在使用 
Request初始化时,默认为cors - 当使用标记启动的嵌入式资源,例如 
<link>、<script>标签(未手动修改 crossorigin 属性),默认为no-cors详细信息请参考 whatwg 规范或 MDN 的 request.mode
 
- 当处于跨域情况下,你应当设置为 
 
credentials
**credentials** 表示的是请求是否在跨域情况下发送 cookie
- 它是一个 
RequestCredentials枚举类型,可取的值有omit,same-origin,include - 该值的默认值在使用 
Request初始化时,默认值为same-origin - 当你需要跨域传递 
cookie凭证信息时,请设置它为include注意这里有一个细节,当设置为
include时,请确保Response Header中Access-Control-Allow-Origin不能为*,需要指定具体源 
body
**body**是一个 BodyInit 类型。它可取的值有 Blob,BufferSource , FormData , URLSearchParams , ReadableStream , USVString。
我们常见的
json对象却不在其中。因此,我们如果需要传递json的话,需要调用JSON.stringify函数来帮助我们转换成字符串。
// 客户端const headers = new Headers({'X-Token': 'fe9',});const request = new Request('http://127.0.0.1:4000/api/request', {method: 'GET',headers,});console.log(request); // Request {method: "GET", url: "http://127.0.0.1:4000/api/request", headers: Headers, destination: "", referrer: "about:client", …}console.log(request.method); // GETconsole.log(request.mode); // corsconsole.log(request.credentials); // same-origin// 如果你想打印headers信息,可以调用 printHeaders(request.headers)
