- AJAX 教程
- AJAX - 首页
- AJAX - 什么是 AJAX?
- AJAX - 历史
- AJAX - 动态网站与静态网站
- AJAX - 技术
- AJAX - 动作
- AJAX - XMLHttpRequest
- AJAX - 发送请求
- AJAX - 请求类型
- AJAX - 处理响应
- AJAX - 处理二进制数据
- AJAX - 提交表单
- AJAX - 文件上传
- AJAX - FormData 对象
- AJAX - 发送 POST 请求
- AJAX - 发送 PUT 请求
- AJAX - 发送 JSON 数据
- AJAX - 发送数据对象
- AJAX - 监控进度
- AJAX - 状态码
- AJAX - 应用
- AJAX - 浏览器兼容性
- AJAX - 例子
- AJAX - 浏览器支持
- AJAX - XMLHttpRequest
- AJAX - 数据库操作
- AJAX - 安全性
- AJAX - 问题
- Fetch API 基础
- Fetch API - 基础
- Fetch API 与 XMLHttpRequest
- Fetch API - 浏览器兼容性
- Fetch API - 头部信息
- Fetch API - 请求
- Fetch API - 响应
- Fetch API - 主体数据
- Fetch API - 凭据
- Fetch API - 发送 GET 请求
- Fetch API - 发送 POST 请求
- Fetch API - 发送 PUT 请求
- Fetch API - 发送 JSON 数据
- Fetch API - 发送数据对象
- Fetch API - 自定义请求对象
- Fetch API - 上传文件
- Fetch API - 处理二进制数据
- Fetch API - 状态码
- Stream API 基础
- Stream API - 基础
- Stream API - 可读流
- Stream API - 可写流
- Stream API - 变换流
- Stream API - 请求对象
- Stream API - 响应体
- Stream API - 错误处理
- AJAX 有用资源
- AJAX - 快速指南
- AJAX - 有用资源
- AJAX - 讨论
Fetch API - 凭据
在 Fetch API 中,cookie、授权标头和 TLS 客户端证书被称为凭据。我们也可以说凭据是数字文档(例如密码、用户名、证书等),用于在向服务器发出请求时确认用户或客户端的身份。
让我们更详细地了解一下这些凭据:
Cookie − 它们是 Web 浏览器存储并与所有相同来源请求一起发送的小数据块。它用于存储会话信息、常用数据等。它们还控制其会话、范围和可访问性。Cookie 也由服务器在 Set-Cookie 标头的帮助下发送。
授权标头 − 这些包括包含身份验证信息(如密码、用户名、密钥等)的 HTTP 标头。授权标头用于实现各种身份验证方案,并通过各种方法(如散列、加密等)由服务器验证。
TLS 客户端证书 − 它们是由认证机构提供的并安装在客户端设备上的数字证书。它们用于在借助传输层安全与服务器创建安全连接时提供客户端的身份证明。
凭据属性
credentials 属性控制是否在跨域请求中发送 cookie 和其他凭据证书。它是 fetch() 函数中的一个可选属性。
语法
fetch(resourceURL, {credentials:"include"})
此属性可以具有以下三个值之一:
omit − 当 credentials 属性的值设置为 omit 时,这意味着浏览器将从请求中删除所有凭据,并忽略响应中发送的凭据。
same-origin − 当 credentials 属性的值设置为 same-origin 时,这意味着浏览器将在对与请求页面相同来源的请求中包含凭据。并且只使用来自相同来源 URL 的凭据。这是此属性的默认值。
include − 当 credentials 属性的值设置为 include 时,这意味着浏览器将在相同来源和跨域请求中包含凭据,并且始终使用响应中发送的凭据。
示例 1
在下面的程序中,我们使用 fetch() 函数向给定的 URL 发出请求。在这里,我们将 credentials 属性设置为“include”值,这意味着跨域和同域凭据都包含在请求中。在向服务器发送请求后,我们现在使用 then() 函数来处理响应。如果遇到错误,则 catch() 函数将处理该错误。
<!DOCTYPE html> <html> <body> <script> // Retrieving data from the URL using a GET request fetch("https://jsonplaceholder.typicode.com/todos/21", { // Sending both same-origin and // cross-origin credentials credentials: "include" }) // Converting received data into text .then(response => response.text()) .then(myData => { // Display the retrieve Data console.log(myData); }) .catch(err=>{ // Cach error if occur console.log("Found Error:", err) }); </script> <h2>Fetch API Example</h2> </body> </html>
输出
示例 2
在下面的程序中,我们使用 fetch() 函数向给定的 URL 发出请求。在这里,我们将 credentials 属性设置为“same-origin”值,这意味着凭据仅包含在对相同来源或域的请求中。在向服务器发送请求后,我们现在使用 then() 函数来处理响应。如果遇到错误,则 catch() 函数将处理该错误。
<!DOCTYPE html> <html> <body> <script> // Retrieving data from the URL using a GET request fetch("https://jsonplaceholder.typicode.com/todos/21", { // Sending credentials only for the same domain request credentials: "same-origin" }) // Converting received data into text .then(response => response.text()) .then(myData => { // Display the retrieve Data console.log(myData); }) .catch(err=>{ // Cach error if occur console.log("Found Error:", err) }); </script> <h2>Fetch API Example</h2> </body> </html>
输出
结论
因此,使用凭据,我们可以控制如何在请求中发送凭据或如何处理响应中返回的凭据。credentials 属性仅影响跨域请求,对于同域请求,浏览器会自动将凭据添加到请求中。在下一篇文章中,我们将学习如何在 Fetch API 中发送 GET 请求。