Headers
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.
Note: This feature is available in Web Workers.
Giao diện Headers của Fetch API cho phép bạn thực hiện nhiều thao tác khác nhau trên các header của HTTP request và response. Các thao tác này bao gồm truy xuất, đặt, thêm và xóa header khỏi danh sách header của request.
Bạn có thể lấy một đối tượng Headers thông qua các thuộc tính Request.headers và Response.headers, đồng thời tạo một đối tượng Headers mới bằng constructor Headers(). So với việc dùng object thuần, dùng đối tượng Headers để gửi request cung cấp thêm một lớp làm sạch đầu vào. Ví dụ, nó chuẩn hóa tên header thành chữ thường, loại bỏ khoảng trắng đầu và cuối khỏi giá trị header, và ngăn không cho một số header nhất định được đặt.
Note: Bạn có thể tìm hiểu thêm về các header có sẵn bằng cách đọc phần tham chiếu HTTP headers của chúng tôi.
Mô tả
Một đối tượng Headers có một danh sách header liên kết, ban đầu rỗng và gồm không hoặc nhiều cặp tên-giá trị. Bạn có thể thêm vào danh sách này bằng các phương thức như append() (xem Ví dụ). Trong mọi phương thức của giao diện này, tên header được so khớp theo chuỗi byte không phân biệt hoa thường.
Một object triển khai Headers có thể được dùng trực tiếp trong cấu trúc for...of thay vì entries(): for (const p of myHeaders) tương đương với for (const p of myHeaders.entries()).
Hạn chế sửa đổi
Một số đối tượng Headers có hạn chế đối với việc các phương thức set(), delete() và append() có thể sửa đổi header hay không. Các hạn chế này được thiết lập tùy theo cách đối tượng Headers được tạo.
- Với header được tạo bằng constructor
Headers(), không có hạn chế sửa đổi nào. - Với header của đối tượng
Request:- Nếu
modecủa request làno-cors, bạn có thể sửa đổi mọi tên/giá trị của CORS-safelisted request header. - Nếu không, bạn có thể sửa đổi mọi tên/giá trị của non-forbidden request header.
- Nếu
- Với header của đối tượng
Response:- Nếu response được tạo bằng
Response.error()hoặcResponse.redirect(), hoặc được nhận từ một lời gọifetch(), các header là bất biến và không thể sửa đổi. - Nếu không, nếu response được tạo bằng
Response()hoặcResponse.json(), bạn có thể sửa đổi mọi tên/giá trị của non-forbidden response header.
- Nếu response được tạo bằng
Tất cả các phương thức của Headers sẽ ném ra TypeError nếu bạn cố truyền vào một tham chiếu đến tên không phải là tên HTTP header hợp lệ. Các thao tác sửa đổi sẽ ném TypeError nếu header là bất biến. Trong mọi trường hợp thất bại khác, chúng sẽ thất bại một cách lặng lẽ.
Constructor
Headers()-
Tạo một đối tượng
Headersmới.
Phương thức thể hiện
Headers.append()-
Thêm một giá trị mới vào một header hiện có bên trong đối tượng
Headers, hoặc thêm header nếu nó chưa tồn tại. Headers.delete()-
Xóa một header khỏi đối tượng
Headers. Headers.entries()-
Trả về một
iteratorcho phép duyệt qua tất cả các cặp khóa/giá trị chứa trong đối tượng này. Headers.forEach()-
Thực thi một hàm được cung cấp một lần cho mỗi cặp khóa/giá trị trong đối tượng
Headersnày. Headers.get()-
Trả về một chuỗi byte của tất cả các giá trị của một header trong đối tượng
Headersvới tên đã cho. -
Trả về một mảng chứa các giá trị của tất cả header
Set-Cookiegắn với một response. Headers.has()-
Trả về giá trị boolean cho biết một đối tượng
Headerscó chứa một header nhất định hay không. Headers.keys()-
Trả về một
iteratorcho phép bạn duyệt qua tất cả các khóa của các cặp khóa/giá trị chứa trong đối tượng này. Headers.set()-
Đặt một giá trị mới cho một header hiện có bên trong đối tượng
Headers, hoặc thêm header nếu nó chưa tồn tại. Headers.values()-
Trả về một
iteratorcho phép bạn duyệt qua tất cả các giá trị của các cặp khóa/giá trị chứa trong đối tượng này.
Note:
Để làm rõ, sự khác biệt giữa Headers.set() và Headers.append() là nếu header được chỉ định đã tồn tại và chấp nhận nhiều giá trị, Headers.set() sẽ ghi đè giá trị hiện có bằng giá trị mới, trong khi Headers.append() sẽ nối giá trị mới vào cuối tập giá trị. Xem các trang riêng của chúng để có mã ví dụ.
Note: Khi các giá trị header được duyệt qua, chúng sẽ tự động được sắp xếp theo thứ tự từ điển, và các giá trị từ những tên header trùng lặp sẽ được gộp lại.
Ví dụ
Trong đoạn mã sau, chúng ta tạo một header mới bằng constructor Headers(), thêm một header mới vào đó bằng append(), rồi trả về giá trị header đó bằng get():
const myHeaders = new Headers();
myHeaders.append("Content-Type", "text/xml");
myHeaders.get("Content-Type"); // should return 'text/xml'
Ta cũng có thể thực hiện điều tương tự bằng cách truyền một mảng các mảng hoặc một object literal vào constructor:
let myHeaders = new Headers({
"Content-Type": "text/xml",
});
// or, using an array of arrays:
myHeaders = new Headers([["Content-Type", "text/xml"]]);
myHeaders.get("Content-Type"); // should return 'text/xml'
Thông số kỹ thuật
| Specification |
|---|
| Fetch> # headers-class> |