Bạn đang xem : Máy chủ http lắng nghe nodejs

Mã nguồn: lib / http.js

Để sử dụng máy chủ HTTP và máy khách, người ta phải request ('node: http') .

Các giao diện HTTP trong Node.js được thiết kế để hỗ trợ nhiều tính năng
của giao thức truyền thống khó sử dụng.
Đặc biệt, các tin nhắn lớn, có thể được mã hóa phân đoạn. Giao diện là
cẩn thận để không bao giờ đệm toàn bộ yêu cầu hoặc phản hồi, vì vậy
người dùng có thể phát trực tuyến dữ liệu.

Tiêu đề thư HTTP được biểu thị bằng một đối tượng như sau:

  {

'content-length'

:

'123' ,

'content-type'

:

'text / trơn'

,

'connection'

:

'keep-living'

,

'host'

:

'example.com'

,

'accept'

:

'* / *'

}

Các phím được viết thường. Giá trị không được sửa đổi.

Để hỗ trợ toàn bộ các ứng dụng HTTP có thể có, Node.js
API HTTP là cấp rất thấp. Nó giải quyết vấn đề xử lý luồng và tin nhắn
chỉ phân tích cú pháp. Nó phân tích cú pháp một tin nhắn thành tiêu đề và nội dung nhưng không
phân tích cú pháp các tiêu đề thực tế hoặc phần nội dung.

Xem message.headers để biết chi tiết về cách xử lý các tiêu đề trùng lặp.

Các tiêu đề thô khi chúng được nhận được giữ lại trong rawHeaders
thuộc tính, là một mảng [key, value, key2, value2, ...] . Vì
ví dụ, đối tượng tiêu đề thư trước đó có thể có rawHeaders
liệt kê như sau:

  [

'ConTent-Length'

,

'123456' ,

'content-LENGTH'

,

'123'

,

'content-type'

,

'text / trơn'

,

'CONNECTION'

,

'keep-living'

,

'Máy chủ'

,

'example.com'

,

'acceptT'

,

'* / *'

]

Lớp: http.Agent #

Đã thêm vào: v0.3.4

Một Agent chịu trách nhiệm quản lý độ bền của kết nối
và sử dụng lại cho các máy khách HTTP. Nó duy trì một hàng đợi các yêu cầu đang chờ xử lý
cho một máy chủ và cổng nhất định, sử dụng lại một kết nối ổ cắm duy nhất cho mỗi
cho đến khi hàng đợi trống, lúc đó ổ cắm bị phá hủy
hoặc đưa vào một nhóm nơi nó được giữ lại để sử dụng lại cho các yêu cầu đối với
cùng một máy chủ và cổng. Cho dù nó bị phá hủy hay gộp lại phụ thuộc vào
Tùy chọn keepAlive .

Các kết nối tổng hợp đã bật TCP Keep-Alive cho chúng, nhưng các máy chủ có thể
vẫn đóng các kết nối không hoạt động, trong trường hợp đó chúng sẽ bị xóa khỏi
nhóm và một kết nối mới sẽ được thực hiện khi một yêu cầu HTTP mới được thực hiện cho
máy chủ và cổng đó. Máy chủ cũng có thể từ chối cho phép nhiều yêu cầu
qua cùng một kết nối, trong trường hợp đó kết nối sẽ phải
làm lại cho mọi yêu cầu và không thể được gộp chung. Agent sẽ vẫn thực hiện
các yêu cầu tới máy chủ đó, nhưng mỗi yêu cầu sẽ xuất hiện qua một kết nối mới.

Khi một kết nối bị đóng bởi máy khách hoặc máy chủ, nó sẽ bị xóa
từ hồ bơi. Bất kỳ ổ cắm nào không sử dụng trong hồ bơi sẽ được xử lý để không
để giữ cho quá trình Node.js chạy khi không có yêu cầu nào.
(xem socket.unref () ).

Thông lệ tốt là hủy () một phiên bản Agent khi nó không có
còn sử dụng lâu hơn vì các ổ cắm không sử dụng tiêu tốn tài nguyên của hệ điều hành.

Các ổ cắm bị xóa khỏi tác nhân khi ổ cắm phát ra
sự kiện 'close' hoặc sự kiện 'agentRemove' . Khi có ý định giữ một
Yêu cầu HTTP mở trong một thời gian dài mà không giữ nó trong tác nhân, một cái gì đó
như sau có thể được thực hiện:

  http. 

get

(tùy chọn,

(

res

) = & gt;

{ }).

on

(

'socket'

,

(< p class = "hljs-params"> socket

) = & gt;

{ socket.

release

(

'agentRemove'

); });

Một đại lý cũng có thể được sử dụng cho một yêu cầu cá nhân. Bằng cách cung cấp
{agent: false} như một tùy chọn cho http.get () hoặc http.request ()
các chức năng, Agent sử dụng một lần với các tùy chọn mặc định sẽ được sử dụng
cho kết nối khách hàng.

agent: false :

  http. 

get

({

tên máy chủ

:

'localhost'

,

cổng

:

80

,

path

:

'/'

,

agent

:

false

},

(

res

) = & gt;

{ });

new Agent ([options]) #

Lịch sử

Thay đổi phiên bản
v15.6.0, v14.17.0

Thay đổi lịch biểu mặc định từ ’50o’ thành ‘đời sống’.

v14.5.0, v12.20.0

Thêm tùy chọn lập lịch để chỉ định chiến lược lập lịch ổ cắm miễn phí.

v14.5.0, v12.19.0

Thêm tùy chọn maxTotalSockets vào hàm tạo tác nhân.

v0.3.4

Đã thêm vào: v0.3.4

  • tùy chọn & lt; Đối tượng & gt; Tập hợp các tùy chọn có thể định cấu hình để đặt trên tác nhân.
    Có thể có các trường sau:

    • keepAlive & lt; boolean & gt; Giữ các ổ cắm xung quanh ngay cả khi không có
      các yêu cầu còn tồn đọng, vì vậy chúng có thể được sử dụng cho các yêu cầu trong tương lai mà không cần
      phải thiết lập lại kết nối TCP. Đừng nhầm lẫn với
      Giá trị giữ nguyên của tiêu đề Kết nối . Kết nối : keep-living
      tiêu đề luôn được gửi khi sử dụng một tác nhân ngoại trừ khi Kết nối
      tiêu đề được chỉ định rõ ràng hoặc khi keepAlive maxSockets
      các tùy chọn tương ứng được đặt thành false Infinity , trong trường hợp này
      Kết nối: close sẽ được sử dụng. Mặc định: false .
    • keepAliveMsecs & lt; number & gt; Khi sử dụng tùy chọn keepAlive , hãy chỉ định
      sự chậm trễ ban đầu
      cho các gói TCP Keep-Alive. Bỏ qua khi
      Tùy chọn keepAlive false hoặc undefined . Mặc định: 1000 .
    • maxSockets & lt; number & gt; Số lượng ổ cắm tối đa cho phép trên mỗi máy chủ.
      Nếu cùng một máy chủ lưu trữ mở nhiều kết nối đồng thời, mỗi yêu cầu
      sẽ sử dụng socket mới cho đến khi đạt đến giá trị maxSockets .
      Nếu máy chủ cố gắng mở nhiều kết nối hơn maxSockets ,
      các yêu cầu bổ sung sẽ đưa vào hàng đợi yêu cầu đang chờ xử lý và
      sẽ chuyển sang trạng thái kết nối hoạt động khi kết nối hiện tại chấm dứt.
      Điều này đảm bảo có nhiều nhất maxSockets kết nối đang hoạt động tại
      bất kỳ lúc nào, từ một máy chủ nhất định.
      Mặc định: Infinity .
    • maxTotalSockets & lt; number & gt; Số lượng ổ cắm tối đa được phép cho
      tổng cộng tất cả các máy chủ. Mỗi yêu cầu sẽ sử dụng một ổ cắm mới
      cho đến khi đạt được mức tối đa.
      Mặc định: Infinity .
    • maxFreeSockets & lt; number & gt; Số lượng ổ cắm tối đa trên mỗi máy chủ lưu trữ để mở
      ở trạng thái tự do. Chỉ phù hợp nếu keepAlive được đặt thành true .
      Mặc định: 256 .
    • lập lịch & lt; string & gt; Chiến lược lập lịch để áp dụng khi chọn
      ổ cắm miễn phí tiếp theo để sử dụng. Nó có thể là 'Fifo' hoặc 'life' .
      Sự khác biệt chính giữa hai chiến lược lập lịch là 'life'
      chọn ổ cắm được sử dụng gần đây nhất, trong khi 'Fifo' chọn
      ổ cắm ít được sử dụng gần đây nhất.
      Trong trường hợp tốc độ yêu cầu mỗi giây thấp, lập lịch 'liveso'
      sẽ giảm nguy cơ chọn một ổ cắm có thể đã bị đóng
      bởi máy chủ do không hoạt động.
      Trong trường hợp tỷ lệ yêu cầu trên giây cao,
      lập lịch 'Fifo' sẽ tối đa hóa số lượng ổ cắm đang mở,
      trong khi lập lịch 'lifeo' sẽ giữ nó ở mức thấp nhất có thể.
      Mặc định: 'life' .
    • timeout & lt; number & gt; Thời gian chờ kết nối tính bằng mili giây.
      Điều này sẽ đặt thời gian chờ khi ổ cắm được tạo.

tùy chọn trong socket.connect () cũng được hỗ trợ.

http.globalAgent mặc định được http.request () sử dụng có tất cả
trong số các giá trị này được đặt thành giá trị mặc định tương ứng.

Để định cấu hình bất kỳ ứng dụng nào trong số chúng, bạn phải tạo phiên bản http.Agent tùy chỉnh.

  

const

http =

request

(

'node: http'

);

const

keepAliveAgent =

new

http.

Tác nhân

({

keepAlive

:

true

}); tùy chọn.

đại lý

= keepAliveAgent; http.

request

(options, onResponseCallback);

agent.createConnection (options [, callback]) #

Đã thêm vào: v0.11.4

  • tùy chọn & lt; Đối tượng & gt; Các tùy chọn chứa chi tiết kết nối. Kiểm tra
    net.createConnection () để biết định dạng của các tùy chọn
  • callback & lt; Function & gt; Hàm gọi lại nhận socket đã tạo
  • Trả về: & lt; stream.Duplex & gt;

Tạo một ổ cắm / luồng để sử dụng cho các yêu cầu HTTP.

Theo mặc định, chức năng này giống với net.createConnection () . Tuy nhiên,
các tác nhân tùy chỉnh có thể ghi đè phương pháp này trong trường hợp muốn có tính linh hoạt cao hơn.

Một ổ cắm / luồng có thể được cung cấp theo một trong hai cách: bằng cách trả về
socket / stream từ chức năng này hoặc bằng cách chuyển socket / stream tới callback .

Phương thức này được đảm bảo trả về một bản sao của lớp & lt; net.Socket & gt; ,
một lớp con của & lt; stream.Duplex & gt; , trừ khi người dùng chỉ định một ổ cắm
nhập khác với & lt; net.Socket & gt; .

callback có chữ ký của (err, stream) .

agent.keepSocketAlive (socket) #

Đã thêm vào: v8.1.0

  • socket & lt; stream.Duplex & gt;

Được gọi khi socket được tách ra khỏi một yêu cầu và có thể được duy trì bởi
Tác nhân . Hành vi mặc định là:

  socket. 

setKeepAlive

(

true

,

this

.

keepAliveMsecs

); socket.

unf

();

return

true

;

Phương thức này có thể bị ghi đè bởi một lớp con Agent cụ thể. Nếu điều này
phương thức trả về một giá trị giả, ổ cắm sẽ bị phá hủy thay vì vẫn tồn tại
nó để sử dụng cho yêu cầu tiếp theo.

Đối số socket có thể là một bản sao của & lt; net.Socket & gt; , một lớp con của
& lt; stream.Duplex & gt; .

agent.reuseSocket (socket, request) #

Đã thêm vào: v8.1.0

  • socket & lt; stream.Duplex & gt;
  • request & lt; http.ClientRequest & gt;

Được gọi khi socket được đính kèm với request sau khi được duy trì vì
các tùy chọn duy trì sự sống. Hành vi mặc định là:

  socket. 

ref

();

Phương thức này có thể bị ghi đè bởi một lớp con Agent cụ thể.

Đối số socket có thể là một bản sao của & lt; net.Socket & gt; , một lớp con của
& lt; stream.Duplex & gt; .

agent.destroy () #

Đã thêm vào: v0.11.4

Hủy bất kỳ ổ cắm nào hiện đang được đại lý sử dụng.

Thường không cần thiết phải làm điều này. Tuy nhiên, nếu sử dụng một
tác nhân đã bật keepAlive , thì tốt nhất là tắt một cách rõ ràng
đại lý khi nó không còn cần thiết nữa. Nếu không thì,
ổ cắm có thể mở trong một thời gian khá dài trước máy chủ
chấm dứt chúng.

agent.freeSockets #

Lịch sử

Thay đổi phiên bản
v16.0.0

Thuộc tính hiện có nguyên mẫu null .

v0.11.4

Đã thêm vào: v0.11.4

  • & lt; Đối tượng & gt;

Một đối tượng chứa các mảng ổ cắm hiện đang được
đại lý khi keepAlive được bật. Không sửa đổi.

Các ổ cắm trong danh sách freeSockets sẽ tự động bị hủy và
bị xóa khỏi mảng vào 'timeout' .

agent.getName ([options]) #

Lịch sử

Thay đổi phiên bản
v17.7.0

Tham số options hiện là tùy chọn.

v0.11.4

Đã thêm vào: v0.11.4

  • options & lt; Object & gt; Một tập hợp các tùy chọn cung cấp thông tin để tạo tên
    • host & lt; string & gt; Tên miền hoặc địa chỉ IP của máy chủ để cấp
      yêu cầu
    • cổng & lt; number & gt; Cổng của máy chủ từ xa
    • localAddress & lt; string & gt; Giao diện cục bộ để liên kết cho các kết nối mạng
      khi đưa ra yêu cầu
    • family & lt; integer & gt; Phải là 4 hoặc 6 nếu giá trị này không bằng undefined .
  • Trả về: & lt; string & gt;

Lấy một tên duy nhất cho một tập hợp các tùy chọn yêu cầu, để xác định xem một
kết nối có thể được sử dụng lại. Đối với tác nhân HTTP, điều này trả về
host: port: localAddress hoặc host: port: localAddress: family . Đối với tác nhân HTTPS,
tên bao gồm CA, cert, ciphers và các tùy chọn HTTPS / TLS cụ thể khác
xác định khả năng tái sử dụng của ổ cắm.

agent.maxFreeSockets #

Đã thêm vào: v0.11.7

  • & lt; number & gt;

Theo mặc định được đặt thành 256. Đối với các tác nhân có bật keepAlive , điều này
đặt số lượng ổ cắm tối đa sẽ được mở khi rảnh rỗi
trạng thái.

agent.maxSockets #

Đã thêm vào: v0.3.6

  • & lt; number & gt;

Theo mặc định được đặt thành Infinity . Xác định có bao nhiêu ổ cắm đồng thời tác nhân
có thể có mở cho mỗi nguồn gốc. Nguồn gốc là giá trị trả về của agent.getName () .

agent.maxTotalSockets #

Đã thêm vào: v14.5.0, v12.19.0

  • & lt; number & gt;

Theo mặc định được đặt thành Infinity . Xác định có bao nhiêu ổ cắm đồng thời tác nhân
có thể có mở. Không giống như maxSockets , thông số này áp dụng cho tất cả các nguồn gốc.

agent.requests #

Lịch sử

Thay đổi phiên bản
v16.0.0

Thuộc tính hiện có nguyên mẫu null .

v0.5.9

Đã thêm vào: v0.5.9

  • & lt; Đối tượng & gt;

Một đối tượng chứa hàng đợi yêu cầu chưa được chỉ định cho
ổ cắm. Không sửa đổi.

agent.sockets #

Lịch sử

Thay đổi phiên bản
v16.0.0

Thuộc tính hiện có nguyên mẫu null .

v0.3.6

Đã thêm vào: v0.3.6

  • & lt; Đối tượng & gt;

Một đối tượng chứa các mảng ổ cắm hiện đang được sử dụng bởi
đại lý. Không sửa đổi.

Lớp: http.Server #

Đã thêm vào: v0.1.17

  • Phần mở rộng: & lt; net.Server & gt;

Sự kiện: 'checkContinue' #

Đã thêm vào: v0.3.0

  • request & lt; http.IncomingMessage & gt;
  • response & lt; http.ServerResponse & gt;

Được gửi mỗi khi nhận được yêu cầu có HTTP Expect: 100-continue .
Nếu sự kiện này không được lắng nghe, máy chủ sẽ tự động phản hồi
với 100 Tiếp tục nếu thích hợp.

Xử lý sự kiện này bằng cách gọi response.writeContinue () nếu
khách hàng nên tiếp tục gửi nội dung yêu cầu hoặc tạo
Phản hồi HTTP (ví dụ: 400 Yêu cầu không hợp lệ) nếu khách hàng không nên tiếp tục gửi
nội dung yêu cầu.

Khi sự kiện này được tạo và xử lý, sự kiện 'request' sẽ
không được phát ra.

Sự kiện: 'checkExpectation' #

Đã thêm vào: v5.5.0

  • request & lt; http.IncomingMessage & gt;
  • response & lt; http.ServerResponse & gt;

Được gửi mỗi khi nhận được yêu cầu có tiêu đề HTTP Expect , trong đó
giá trị không phải là 100-continue . Nếu sự kiện này không được lắng nghe, máy chủ sẽ
tự động trả lời bằng 417 Không mong đợi nếu thích hợp.

Khi sự kiện này được tạo và xử lý, sự kiện 'request' sẽ
không được phát ra.

Sự kiện: 'clientError' #

Lịch sử

Thay đổi phiên bản
v12.0.0

Hành vi mặc định sẽ trả về 431 Trường tiêu đề yêu cầu Quá lớn nếu xảy ra lỗi HPE_HEADER_OVERFLOW.

v9.4.0

rawPacket là bộ đệm hiện tại vừa được phân tích cú pháp. Thêm bộ đệm này vào đối tượng lỗi của sự kiện 'clientError' là để các nhà phát triển có thể ghi lại gói bị hỏng.

v6.0.0

Hành động mặc định gọi .destroy () trên socket sẽ không còn diễn ra nếu có trình nghe được đính kèm cho 'clientError' .

v0.1.94

Đã thêm vào: v0.1.94

  • ngoại lệ & lt; Lỗi & gt;
  • socket & lt; stream.Duplex & gt;

Nếu kết nối máy khách phát ra sự kiện 'error' , nó sẽ được chuyển tiếp tại đây.
Người nghe của sự kiện này có trách nhiệm đóng / hủy phần bên dưới
ổ cắm. Ví dụ, người ta có thể muốn đóng ổ cắm một cách duyên dáng hơn bằng một
phản hồi HTTP tùy chỉnh thay vì đột ngột ngắt kết nối.

Sự kiện này được đảm bảo sẽ truyền một phiên bản của lớp & lt; net.Socket & gt; ,
một lớp con của & lt; stream.Duplex & gt; , trừ khi người dùng chỉ định một ổ cắm
nhập khác với & lt; net.Socket & gt; .

Hành vi mặc định là thử đóng socket với HTTP ‘400 Bad Request’,
hoặc HTTP ‘431 Trường tiêu đề yêu cầu quá lớn’ trong trường hợp
Lỗi HPE_HEADER_OVERFLOW . Nếu ổ cắm không thể ghi hoặc đã có
dữ liệu đã viết, nó sẽ bị hủy ngay lập tức.

socket là đối tượng net.Socket mà lỗi bắt nguồn từ đó.

  

const

http =

request

(

'nút: http'

);

const

server = http.

createServer

(

(

req, res

) = & gt;

{ res.

end

(); }); máy chủ.

on

(

'clientError'

,

(

err, socket

) = & gt;

{ socket.

end

(

'HTTP / 1.1 400 Yêu cầu Không hợp lệ \ r \ n \ r \ n'

) ; }); máy chủ.

nghe

(

8000

);

Khi sự kiện 'clientError' xảy ra, không có yêu cầu hoặc phản hồi
đối tượng, do đó, bất kỳ phản hồi HTTP nào được gửi, bao gồm tiêu đề phản hồi và tải trọng,
phải được ghi trực tiếp vào đối tượng socket . Cần phải cẩn thận để
đảm bảo phản hồi là một thông báo phản hồi HTTP được định dạng đúng.

err là một trường hợp của Error với hai cột bổ sung:

  • bytesParsed : số byte của gói yêu cầu mà Node.js có thể đã phân tích cú pháp
    chính xác;
  • rawPacket : gói thô của yêu cầu hiện tại.

Trong một số trường hợp, khách hàng đã nhận được phản hồi và / hoặc ổ cắm
đã bị hủy, như trong trường hợp lỗi ECONNRESET . Trước
đang cố gắng gửi dữ liệu đến ổ cắm, tốt hơn nên kiểm tra xem nó vẫn còn
có thể ghi được.

  server. 

on

(

'clientError'

,

(

err, socket

) = & gt;

{

if

(err.

===

'ECONNRESET' < / p> ||! socket.

có thể ghi được

) {

trả về

; } socket.

end

(

'HTTP / 1.1 400 Yêu cầu Không hợp lệ \ r \ n \ r \ n'

) ; });

Sự kiện: 'close' #

Đã thêm vào: v0.1.4

Được phát ra khi máy chủ đóng.

Sự kiện: 'connect' #

Đã thêm vào: v0.7.0

  • request & lt; http.IncomingMessage & gt; Đối số cho yêu cầu HTTP, giống như trong
    sự kiện 'request'
  • socket & lt; stream.Duplex & gt; Ổ cắm mạng giữa máy chủ và máy khách
  • head & lt; Buffer & gt; Gói đầu tiên của luồng đào đường hầm (có thể trống)

Được gửi mỗi khi khách hàng yêu cầu phương thức HTTP CONNECT . Nếu sự kiện này là
không được lắng nghe, khi đó các ứng dụng khách yêu cầu phương thức CONNECT sẽ có
kết nối bị đóng.

Sự kiện này được đảm bảo sẽ truyền một phiên bản của lớp & lt; net.Socket & gt; ,
một lớp con của & lt; stream.Duplex & gt; , trừ khi người dùng chỉ định một ổ cắm
nhập khác với & lt; net.Socket & gt; .

Sau khi sự kiện này được phát ra, ổ cắm của yêu cầu sẽ không có 'data'
trình xử lý sự kiện, nghĩa là nó sẽ cần được ràng buộc để xử lý dữ liệu
được gửi đến máy chủ trên ổ cắm đó.

Sự kiện: 'connection' #

Đã thêm vào: v0.1.0

  • socket & lt; stream.Duplex & gt;

Sự kiện này được phát ra khi một luồng TCP mới được thiết lập. socket
thường là một đối tượng thuộc loại net.Socket . Thông thường người dùng sẽ không muốn
truy cập sự kiện này. Đặc biệt, ổ cắm sẽ không phát ra các sự kiện 'readable'
vì cách trình phân tích cú pháp giao thức gắn vào socket. socket có thể
cũng được truy cập tại request.socket .

Sự kiện này cũng có thể được người dùng phát ra một cách rõ ràng để đưa các kết nối vào
vào máy chủ HTTP. Trong trường hợp đó, mọi luồng Song công đều có thể được chuyển.

Nếu socket.setTimeout () được gọi ở đây, thời gian chờ sẽ được thay thế bằng
server.keepAliveTimeout khi ổ cắm đã gửi yêu cầu (nếu
server.keepAliveTimeout khác 0).

Sự kiện này được đảm bảo sẽ truyền một phiên bản của lớp & lt; net.Socket & gt; ,
một lớp con của & lt; stream.Duplex & gt; , trừ khi người dùng chỉ định một ổ cắm
nhập khác với & lt; net.Socket & gt; .

Sự kiện: 'request' #

Đã thêm vào: v0.1.0

  • request & lt; http.IncomingMessage & gt;
  • response & lt; http.ServerResponse & gt;

Được gửi mỗi khi có yêu cầu. Có thể có nhiều yêu cầu
mỗi kết nối (trong trường hợp kết nối HTTP Keep-Alive).

Sự kiện: 'lift' #

Lịch sử

Thay đổi phiên bản
v10.0.0

Việc không lắng nghe sự kiện này sẽ khiến ổ cắm bị phá hủy nếu khách hàng gửi tiêu đề Nâng cấp.

v0.1.94

Đã thêm vào: v0.1.94

  • request & lt; http.IncomingMessage & gt; Đối số cho yêu cầu HTTP, giống như trong
    sự kiện 'request'
  • socket & lt; stream.Duplex & gt; Ổ cắm mạng giữa máy chủ và máy khách
  • head & lt; Buffer & gt; Gói đầu tiên của luồng được nâng cấp (có thể trống)

Được gửi mỗi khi khách hàng yêu cầu nâng cấp HTTP. Nghe sự kiện này
là tùy chọn và khách hàng không thể đòi thay đổi giao thức.

Sau khi sự kiện này được phát ra, ổ cắm của yêu cầu sẽ không có 'data'
trình xử lý sự kiện, nghĩa là nó sẽ cần được ràng buộc để xử lý dữ liệu
được gửi đến máy chủ trên ổ cắm đó.

Sự kiện này được đảm bảo sẽ truyền một phiên bản của lớp & lt; net.Socket & gt; ,
một lớp con của & lt; stream.Duplex & gt; , trừ khi người dùng chỉ định một ổ cắm
nhập khác với & lt; net.Socket & gt; .

server.close ([callback]) #

Đã thêm vào: v0.1.90

  • gọi lại & lt; Hàm & gt;

Dừng máy chủ chấp nhận các kết nối mới. Xem net.Server.close () .

server.closeAllConnections () #

Đã thêm vào: v18.2.0

Đóng tất cả các kết nối được kết nối với máy chủ này.

server.closeIdleConnections () #

Đã thêm vào: v18.2.0

Đóng tất cả các kết nối được kết nối với máy chủ này không gửi yêu cầu
hoặc chờ phản hồi.

server.headersTimeout #

Đã thêm vào: v11.3.0, v10.14.0

  • & lt; number & gt; Mặc định: 60000

Giới hạn khoảng thời gian mà trình phân tích cú pháp sẽ đợi để nhận được HTTP hoàn chỉnh
tiêu đề.

Nếu hết thời gian chờ, máy chủ sẽ phản hồi với trạng thái 408 mà không
chuyển tiếp yêu cầu tới trình xử lý yêu cầu và sau đó đóng kết nối.

Nó phải được đặt thành giá trị khác 0 (ví dụ: 120 giây) để bảo vệ khỏi
các cuộc tấn công Từ chối Dịch vụ tiềm ẩn trong trường hợp máy chủ được triển khai mà không có
proxy ngược ở phía trước.

server.listen () #

Bắt đầu máy chủ HTTP lắng nghe các kết nối.
Phương thức này giống với server.listen () từ net.Server .

server.listening #

Đã thêm vào: v5.7.0

  • & lt; boolean & gt; Cho biết máy chủ có đang lắng nghe kết nối hay không.

server.maxHeadersCount #

Đã thêm vào: v0.7.0

  • & lt; number & gt; Mặc định: 2000

Giới hạn số lượng tiêu đề đến tối đa. Nếu được đặt thành 0, sẽ không có giới hạn nào được áp dụng.

server.requestTimeout #

Lịch sử

Thay đổi phiên bản
v18.0.0

Thời gian chờ yêu cầu mặc định đã thay đổi từ không có thời gian chờ thành 300 giây (5 phút).

v14.11.0

Đã thêm vào: v14.11.0

  • & lt; number & gt; Mặc định: 300000

Đặt giá trị thời gian chờ tính bằng mili giây để nhận toàn bộ yêu cầu từ
khách hàng.

Nếu hết thời gian chờ, máy chủ sẽ phản hồi với trạng thái 408 mà không
chuyển tiếp yêu cầu tới trình xử lý yêu cầu và sau đó đóng kết nối.

Nó phải được đặt thành giá trị khác 0 (ví dụ: 120 giây) để bảo vệ khỏi
các cuộc tấn công Từ chối Dịch vụ tiềm ẩn trong trường hợp máy chủ được triển khai mà không có
proxy ngược ở phía trước.

server.setTimeout ([msecs] [, callback]) # < span class = "inherit" id = "http_server_settimeout_msecs_callback">

Lịch sử

Thay đổi phiên bản
v13.0.0

Thời gian chờ mặc định đã thay đổi từ 120 giây thành 0 (không có thời gian chờ).

v0.9.12

Đã thêm vào: v0.9.12

  • msecs & lt; number & gt; Mặc định: 0 (không hết thời gian chờ)
  • gọi lại & lt; Hàm & gt;
  • Trả về: & lt; http.Server & gt;

Đặt giá trị thời gian chờ cho các ổ cắm và phát ra sự kiện 'timeout' trên
đối tượng Máy chủ, chuyển socket làm đối số, nếu thời gian chờ
xảy ra.

Nếu có trình xử lý sự kiện 'timeout' trên đối tượng Máy chủ, thì nó
sẽ được gọi với socket hết thời gian làm đối số.

Theo mặc định, Máy chủ không cắm thời gian chờ. Tuy nhiên, nếu một cuộc gọi lại
được gán cho sự kiện 'timeout' của Máy chủ, thời gian chờ phải được xử lý
một cách rõ ràng.

server.maxRequestsPerSocket #

Đã thêm vào: v16.10.0

  • & lt; number & gt; Yêu cầu trên mỗi ổ cắm. Mặc định: 0 (không giới hạn)

Số lượng yêu cầu tối đa mà ổ cắm có thể xử lý
trước khi đóng, hãy giữ kết nối tồn tại.

Giá trị 0 sẽ vô hiệu hóa giới hạn.

Khi đạt đến giới hạn, nó sẽ đặt giá trị tiêu đề Connection thành close ,
nhưng sẽ không thực sự đóng kết nối, các yêu cầu tiếp theo được gửi
sau khi đạt đến giới hạn, sẽ nhận được phản hồi 503 Service Unavailable .

server.timeout #

Lịch sử

Thay đổi phiên bản
v13.0.0

Thời gian chờ mặc định đã thay đổi từ 120 giây thành 0 (không có thời gian chờ).

v0.9.12

Đã thêm vào: v0.9.12

  • & lt; number & gt; Thời gian chờ tính bằng mili giây. Mặc định: 0 (không có thời gian chờ)

Số mili giây không hoạt động trước khi một ổ cắm được giả định
đã hết thời gian chờ.

Giá trị 0 sẽ vô hiệu hóa hành vi hết thời gian chờ trên các kết nối đến.

Logic thời gian chờ của ổ cắm được thiết lập khi kết nối, vì vậy việc thay đổi điều này
value chỉ ảnh hưởng đến các kết nối mới tới máy chủ, không ảnh hưởng đến bất kỳ kết nối hiện có nào.

server.keepAliveTimeout #

Đã thêm vào: v8.0.0

  • & lt; number & gt; Thời gian chờ tính bằng mili giây. Mặc định: 5000 (5 giây).

Số mili giây không hoạt động mà máy chủ cần phải đợi thêm
dữ liệu đến, sau khi nó đã hoàn thành việc ghi phản hồi cuối cùng, trước một ổ cắm
sẽ bị hủy diệt. Nếu máy chủ nhận được dữ liệu mới trước khi giữ nguyên
thời gian chờ đã kích hoạt, nó sẽ đặt lại thời gian chờ không hoạt động thường xuyên, tức là
server.timeout .

Giá trị 0 sẽ vô hiệu hóa hành vi hết thời gian duy trì khi đến
kết nối.
Giá trị 0 làm cho máy chủ http hoạt động tương tự như các phiên bản Node.js trước đó
lên 8.0.0, không có thời gian chờ duy trì.

Logic thời gian chờ của ổ cắm được thiết lập khi kết nối, vì vậy chỉ thay đổi giá trị này
ảnh hưởng đến các kết nối mới tới máy chủ, không ảnh hưởng đến bất kỳ kết nối hiện có nào.

Lớp: http.ServerResponse #

Đã thêm vào: v0.1.17

  • Phần mở rộng: & lt; http.OutgoingMessage & gt;

Đối tượng này được tạo bên trong bởi một máy chủ HTTP, không phải bởi người dùng. Nó là
được truyền dưới dạng tham số thứ hai cho sự kiện 'request' .

Sự kiện: 'close' #

Đã thêm vào: v0.6.7

Cho biết rằng phản hồi đã hoàn tất hoặc kết nối cơ bản của nó là
kết thúc sớm (trước khi hoàn thành phản hồi).

Sự kiện: 'finish' #

Đã thêm vào: v0.3.6

Được gửi khi phản hồi đã được gửi. Đặc biệt hơn, sự kiện này là
được phát ra khi phân đoạn cuối cùng của tiêu đề và nội dung phản hồi đã được
giao cho hệ điều hành để truyền qua mạng. Nó
không ngụ ý rằng khách hàng đã nhận được bất kỳ thứ gì.

response.addTrailers (headers) #

Đã thêm vào: v0.3.0

  • tiêu đề & lt; Đối tượng & gt;

Phương pháp này thêm các tiêu đề theo sau HTTP (một tiêu đề nhưng ở cuối
tin nhắn) cho phản hồi.

Đoạn giới thiệu sẽ chỉ được phát nếu mã hóa phân đoạn được sử dụng cho
phản ứng; nếu không (ví dụ: nếu yêu cầu là HTTP / 1.0), họ sẽ
bị loại bỏ một cách âm thầm.

HTTP yêu cầu gửi tiêu đề Trailer để
phát ra đoạn giới thiệu, với danh sách các trường tiêu đề trong giá trị của nó. Ví dụ:

  response. 

writeHead

(

200

, {< p class = "hljs-string"> 'Content-Type'

:

'text / trơn'

,

'Đoạn giới thiệu'

:

'Content-MD5'

}); đáp ứng.

write

(fileData); phản hồi.

addTrailers

({

'Content-MD5'

:

'7895bf4b8828b55ceaf47747b4bca667'

}); phản ứng.

end

();

Cố gắng đặt tên hoặc giá trị trường tiêu đề có chứa các ký tự không hợp lệ
sẽ dẫn đến việc tạo ra TypeError .

response.connection #

Đã thêm vào: v0.3.0

Không được dùng nữa kể từ: v13.0.0

Độ ổn định: 0 – Không được dùng nữa. Sử dụng response.socket

  • & lt; stream.Duplex & gt;

Xem response.socket .

response.cork () #

Đã thêm vào: v13.2.0, v12.16.0

Xem writeable.cork () .

response.end ([data [, encoding]] [, callback]) #

Lịch sử

Thay đổi phiên bản
v10.0.0

Phương thức này hiện trả về một tham chiếu đến ServerResponse .

v0.1.90

Đã thêm vào: v0.1.90

  • data & lt; string & gt; | & lt; Bộ đệm & gt;
  • mã hóa & lt; string & gt;
  • gọi lại & lt; Hàm & gt;
  • Trả về: & lt; this & gt;

Phương thức này báo hiệu cho máy chủ rằng tất cả các tiêu đề và nội dung phản hồi
đã được gửi; máy chủ đó sẽ coi thông báo này đã hoàn tất.
Phương thức, response.end () , PHẢI được gọi trên mỗi phản hồi.

Nếu data được chỉ định, nó có tác dụng tương tự như gọi
response.write (dữ liệu, mã hóa) , theo sau là response.end (gọi lại) .

Nếu callback được chỉ định, nó sẽ được gọi khi luồng phản hồi
đã kết thúc.

response.ished #

Đã thêm vào: v0.0.2

Không được dùng nữa kể từ: v13.4.0, v12.16.0

Độ ổn định: 0 – Không được dùng nữa. Sử dụng response.wectsEnded

  • & lt; boolean & gt;

Thuộc tính response.ished sẽ là true nếu response.end ()
đã được gọi.

response.flushHeaders () #

Đã thêm vào: v1.6.0

Xóa các tiêu đề phản hồi. Xem thêm: request.flushHeaders () .

response.getHeader (name) #

Đã thêm vào: v0.4.0

  • name & lt; string & gt;
  • Trả về: & lt; bất kỳ & gt;

Đọc ra một tiêu đề đã được xếp hàng đợi nhưng chưa được gửi đến máy khách.
Tên không phân biệt chữ hoa chữ thường. Loại giá trị trả về phụ thuộc
trên các đối số được cung cấp cho response.setHeader () .

  response. 

setHeader

(

'Content-Type' ,

'text / html'

); đáp ứng.

setHeader

(

'Content-Length'

,

Bộ đệm

.

byteLength

(body)); đáp ứng.

setHeader

(

'Set-Cookie'

, [

'type = ninja'

,

'language = javascript'

]);

const

contentType = response.

getHeader

(

'content-type '

);

const

contentLength = response.

getHeader

(

'Content-Length '

);

const

setCookie = response.

getHeader

(

'set-cookie '

);

response.getHeaderNames () #

Đã thêm vào: v7.7.0

  • Trả về: & lt; string [] & gt;

Trả về một mảng chứa các tên duy nhất của các tiêu đề gửi đi hiện tại.
Tất cả các tên tiêu đề đều là chữ thường.

  response. 

setHeader

(

'Foo'

,

'bar'

); đáp ứng.

setHeader

(

'Set-Cookie'

, [

'foo = bar'

,

'bar = baz'

]);

const

headerNames = response.

getHeaderNames

();

response.getHeaders () #

Đã thêm vào: v7.7.0

  • Trả về: & lt; Đối tượng & gt;

Trả về bản sao ngắn của các tiêu đề gửi đi hiện tại. Kể từ một bản sao cạn
được sử dụng, các giá trị mảng có thể bị thay đổi mà không cần các lệnh gọi bổ sung đến các
các phương pháp mô-đun http liên quan đến tiêu đề. Các khóa của đối tượng trả về là
tên tiêu đề và các giá trị là các giá trị tiêu đề tương ứng. Tất cả các tên tiêu đề
là chữ thường.

Đối tượng được trả về bởi phương thức response.getHeaders () không
kế thừa nguyên mẫu từ JavaScript Object . Điều này có nghĩa là điển hình
Các phương thức Object như obj.toString () , obj.hasOwnProperty () , và các phương thức khác
không được xác định và sẽ không hoạt động.

  response. 

setHeader

(

'Foo'

,

'bar'

); đáp ứng.

setHeader

(

'Set-Cookie'

, [

'foo = bar'

,

'bar = baz'

]);

const

headers = response.

getHeaders

();

response.hasHeader (name) #

Đã thêm vào: v7.7.0

  • name & lt; string & gt;
  • Trả về: & lt; boolean & gt;

Trả về true nếu tiêu đề được xác định bởi name hiện được đặt trong
tiêu đề gửi đi. Đối sánh tên tiêu đề không phân biệt chữ hoa chữ thường.

  

const

hasContentType = response.

hasHeader

(< p class = "hljs-string"> 'content-type'

);

response.headersSent #

Đã thêm vào: v0.9.3

  • & lt; boolean & gt;

Boolean (chỉ đọc). Đúng nếu tiêu đề được gửi, ngược lại là sai.

response.removeHeader (name) #

Đã thêm vào: v0.4.0

  • name & lt; string & gt;

Xóa tiêu đề được xếp hàng đợi để gửi ẩn.

  response. 

removeHeader

(

'Content-Encoding' );

response.req #

Đã thêm vào: v15.7.0

  • & lt; http.IncomingMessage & gt;

Tham chiếu đến đối tượng HTTP request ban đầu.

response.sendDate

Đã thêm vào: v0.7.5

  • & lt; boolean & gt;

Khi đúng, tiêu đề Ngày sẽ tự động được tạo và gửi đến
phản hồi nếu nó chưa có trong tiêu đề. Giá trị mặc định là true.

Điều này chỉ nên được tắt để thử nghiệm; HTTP yêu cầu tiêu đề Ngày
trong các câu trả lời.

response.setHeader (tên, giá trị) #

Đã thêm vào: v0.4.0

  • name & lt; string & gt;
  • giá trị & lt; bất kỳ & gt;
  • Trả về: & lt; http.ServerResponse & gt;

Trả về đối tượng phản hồi.

Đặt một giá trị tiêu đề duy nhất cho các tiêu đề ngầm định. Nếu tiêu đề này đã tồn tại
trong tiêu đề được gửi, giá trị của nó sẽ được thay thế. Sử dụng một mảng các chuỗi
tại đây để gửi nhiều tiêu đề có cùng tên. Các giá trị không phải chuỗi sẽ là
được lưu trữ mà không cần sửa đổi. Do đó, response.getHeader () có thể trả về
giá trị không phải chuỗi. Tuy nhiên, các giá trị không phải chuỗi sẽ được chuyển đổi thành chuỗi
để truyền mạng. Đối tượng phản hồi tương tự được trả lại cho người gọi,
để bật chuỗi cuộc gọi.

  response. 

setHeader

(

'Content-Type' ,

'text / html'

);

hoặc

  response. 

setHeader

(

'Set-Cookie' , [

'type = ninja'

,

'language = javascript'

]);
< / pre>

Cố gắng đặt tên hoặc giá trị trường tiêu đề có chứa các ký tự không hợp lệ sẽ dẫn đến việc tạo ra TypeError .

Khi các tiêu đề đã được đặt bằng response.setHeader () , chúng sẽ được hợp nhất với bất kỳ tiêu đề nào được chuyển đến response.writeHead () , với các tiêu đề được chuyển ưu tiên cho response.writeHead () .

 

const

server = http.

createServer

(

(

req, res

) = & gt;

{ res.

setHeader

(

'Content-Type'

,

' text / html '

); res.

setHeader

(

'X-Foo'

,

' thanh '

); res.

writeHead

(

200

, {

'Content-Type '

:

' text / trơn '

}); res.

end

(

'ok'

); });

Nếu phương thức response.writeHead () được gọi và phương thức này chưa được
được gọi, nó sẽ ghi trực tiếp các giá trị tiêu đề được cung cấp vào mạng
kênh không có bộ nhớ đệm bên trong và response.getHeader () trên
tiêu đề sẽ không mang lại kết quả mong đợi. Nếu quần thể tiêu đề lũy tiến
được mong muốn với khả năng truy xuất và sửa đổi trong tương lai, sử dụng
response.setHeader () thay vì response.writeHead () .

response.setTimeout (msecs [, callback]) #

Đã thêm vào: v0.9.12

  • msecs & lt; number & gt;
  • gọi lại & lt; Hàm & gt;
  • Trả về: & lt; http.ServerResponse & gt;

Đặt giá trị thời gian chờ của Socket thành msecs . Nếu một cuộc gọi lại là
được cung cấp, sau đó nó được thêm làm trình nghe trong sự kiện 'timeout' trên
đối tượng phản hồi.

Nếu không có trình nghe 'timeout' nào được thêm vào yêu cầu, thì phản hồi hoặc
máy chủ, sau đó các ổ cắm sẽ bị phá hủy khi chúng hết thời gian. Nếu một người xử lý là
được chỉ định cho yêu cầu, phản hồi hoặc các sự kiện 'timeout' của máy chủ,
các ổ cắm hết thời gian chờ phải được xử lý rõ ràng.

response.socket #

Đã thêm vào: v0.3.0

  • & lt; stream.Duplex & gt;

Tham chiếu đến ổ cắm bên dưới. Thông thường người dùng sẽ không muốn truy cập
tài sản này. Đặc biệt, ổ cắm sẽ không phát ra các sự kiện 'readable'
vì cách trình phân tích cú pháp giao thức gắn vào socket. Sau
response.end () , thuộc tính này không có giá trị.

  

const

http =

request

(

'nút: http'

);

const

server = http.

createServer

(

(

req, res

) = & gt;

{

const

ip = res.

socket

.

remoteAddress

;

const

port = res.

socket

.

remotePort

; res.

end

(

`Địa chỉ IP của bạn là

$ {ip} và cổng nguồn của bạn là

$ {port}

.`

); }).

nghe

(

3000

);

Thuộc tính này được đảm bảo là bản sao của lớp & lt; net.Socket & gt; ,
một lớp con của & lt; stream.Duplex & gt; , trừ khi người dùng chỉ định một ổ cắm
nhập khác với & lt; net.Socket & gt; .

response.statusCode #

Đã thêm vào: v0.4.0

  • & lt; number & gt; Mặc định: 200

Khi sử dụng tiêu đề ngầm định (không gọi response.writeHead () một cách rõ ràng),
thuộc tính này kiểm soát mã trạng thái sẽ được gửi đến máy khách khi
các tiêu đề bị đỏ.

  response. 

statusCode

=

404

;

Sau khi tiêu đề phản hồi được gửi đến máy khách, thuộc tính này cho biết
mã trạng thái đã được gửi đi.

response.statusMessage #

Đã thêm vào: v0.11.8

  • & lt; string & gt;

Khi sử dụng tiêu đề ngầm định (không gọi response.writeHead () một cách rõ ràng),
thuộc tính này kiểm soát thông báo trạng thái sẽ được gửi đến máy khách khi
các tiêu đề bị đỏ bừng. Nếu điều này được để là không xác định thì tiêu chuẩn
thông báo cho mã trạng thái sẽ được sử dụng.

  response. 

statusMessage

=

'Không tìm thấy'

;

Sau khi tiêu đề phản hồi được gửi đến máy khách, thuộc tính này cho biết
thông báo trạng thái đã được gửi đi.

response.uncork () #

Đã thêm vào: v13.2.0, v12.16.0

Xem writeable.uncork () .

response.wectsEnded #

Đã thêm vào: v12.9.0

  • & lt; boolean & gt;

true sau khi response.end () được gọi. Tài sản này
không cho biết liệu dữ liệu đã được xóa hay chưa, để sử dụng
Thay vào đó, response.wariesFinishing .

response.wainedFinishing #

Đã thêm vào: v12.7.0

  • & lt; boolean & gt;

true nếu tất cả dữ liệu đã được chuyển sang hệ thống cơ bản, ngay lập tức
trước khi sự kiện 'finish' được phát ra.

response.write (chunk [, encoding] [, callback]) # < / span>

Đã thêm vào: v0.1.29

  • chunk & lt; string & gt; | & lt; Bộ đệm & gt;
  • mã hóa & lt; string & gt; Mặc định: 'utf8'
  • gọi lại & lt; Hàm & gt;
  • Trả về: & lt; boolean & gt;

Nếu phương thức này được gọi và response.writeHead () chưa được gọi,
nó sẽ chuyển sang chế độ tiêu đề ngầm định và xóa các tiêu đề ngầm định.

Điều này sẽ gửi một phần nội dung phản hồi. Phương pháp này có thể
được gọi nhiều lần để cung cấp các bộ phận liên tiếp của cơ thể.

Trong mô-đun node: http , phần nội dung phản hồi bị bỏ qua khi
yêu cầu là một yêu cầu HEAD. Tương tự, các phản hồi 204 304
không được bao gồm nội dung thư.

chunk có thể là một chuỗi hoặc một bộ đệm. Nếu chunk là một chuỗi,
tham số thứ hai chỉ định cách mã hóa nó thành một luồng byte.
callback sẽ được gọi khi đoạn dữ liệu này được xóa.

Đây là phần thân HTTP thô và không liên quan gì đến nhiều phần cấp cao hơn
mã hóa nội dung có thể được sử dụng.

Lần đầu tiên response.write () được gọi, nó sẽ gửi vào bộ đệm
thông tin tiêu đề và phần nội dung đầu tiên cho khách hàng. Thư hai
time response.write () được gọi, Node.js giả định dữ liệu sẽ được truyền trực tuyến,
và gửi dữ liệu mới một cách riêng biệt. Đó là, phản hồi được lưu vào bộ đệm
phần đầu tiên của cơ thể.

Trả về true nếu toàn bộ dữ liệu đã được chuyển thành công vào hạt nhân
đệm. Trả về false nếu tất cả hoặc một phần dữ liệu đã được xếp hàng đợi trong bộ nhớ người dùng.
'blank' sẽ được phát ra khi bộ đệm trống trở lại.

response.writeContinue () #

Đã thêm vào: v0.3.0

Gửi thông báo Tiếp tục HTTP / 1.1 100 cho khách hàng, cho biết rằng
phần thân yêu cầu sẽ được gửi đi. Xem sự kiện 'checkContinue' trên
Máy chủ .

response.writeHead (statusCode [, statusMessage] [, headers]) # < / span>

Lịch sử

Thay đổi phiên bản
v14.14.0

Cho phép chuyển các tiêu đề dưới dạng một mảng.

v11.10.0, v10.17.0

Trả lại this từ writeHead () để cho phép chuỗi với end () .

v5.11.0, v4.4.5

Một RangeError được đưa ra nếu statusCode không phải là một số trong dải ô [100, 999] .

v0.1.30

Đã thêm vào: v0.1.30

  • statusCode & lt; number & gt;
  • statusMessage & lt; string & gt;
  • tiêu đề & lt; Đối tượng & gt; | & lt; Mảng & gt;
  • Trả về: & lt; http.ServerResponse & gt;

Gửi tiêu đề phản hồi cho yêu cầu. Mã trạng thái là một HTTP 3 chữ số
mã trạng thái, như 404 . Đối số cuối cùng, headers , là tiêu đề phản hồi.
Theo tùy chọn, người ta có thể đưa ra một statusMessage có thể đọc được dưới dạng thứ hai
tranh luận.

headers có thể là một Array trong đó các khóa và giá trị nằm trong cùng một danh sách.
Nó không phải là một danh sách các bộ giá trị. Vì vậy, các hiệu số chẵn là các giá trị quan trọng,
và các hiệu số lẻ là các giá trị được liên kết. Mảng nằm trong cùng một
định dạng dưới dạng request.rawHeaders .

Trả về một tham chiếu đến ServerResponse , để các lệnh gọi có thể được xâu chuỗi.

  

const

body =

'hello world'

; phản ứng .

writeHead

(

200

, {

'Content-Length'

:

Bộ đệm

.

byteLength < / p> (body),

'Content-Type'

:

'text / trơn'

}) .

end

(body);

Phương thức này chỉ được gọi một lần trên một tin nhắn và nó phải
được gọi trước khi response.end () được gọi.

Nếu response.write () hoặc response.end () được gọi trước khi gọi
điều này, các tiêu đề ngầm định / có thể thay đổi sẽ được tính toán và gọi hàm này.

Khi các tiêu đề đã được đặt bằng response.setHeader () , chúng sẽ được hợp nhất
với bất kỳ tiêu đề nào được chuyển đến response.writeHead () , với các tiêu đề được chuyển
ưu tiên cho response.writeHead () .

Nếu phương thức này được gọi và response.setHeader () chưa được gọi,
nó sẽ ghi trực tiếp các giá trị tiêu đề được cung cấp vào kênh mạng
mà không cần lưu vào bộ nhớ đệm bên trong và response.getHeader () trên tiêu đề
sẽ không mang lại kết quả như mong đợi. Nếu dân số lũy tiến của tiêu đề là
mong muốn với khả năng truy xuất và sửa đổi trong tương lai, sử dụng
Thay vào đó, response.setHeader () .

 

const

server = http.

createServer

(

(

req, res

) = & gt;

{ res.

setHeader

(

'Content-Type'

,

' text / html '

); res.

setHeader

(

'X-Foo'

,

' thanh '

); res.

writeHead

(

200

, {

'Content-Type '

:

' text / trơn '

}); res.

end

(

'ok'

); });

Content-Length được tính bằng byte, không phải ký tự. Sử dụng
Buffer.byteLength () để xác định chiều dài của phần thân theo byte. Node.js
không kiểm tra xem Content-Length và độ dài của phần nội dung có
được truyền đi có bình đẳng hay không.

Cố gắng đặt tên hoặc giá trị trường tiêu đề có chứa các ký tự không hợp lệ
sẽ dẫn đến việc tạo ra TypeError .

response.writeProcessing () #

Đã thêm vào: v10.0.0

Gửi thông báo đang xử lý HTTP / 1.1 102 tới máy khách, cho biết rằng
nội dung yêu cầu sẽ được gửi.

Lớp: http.IncomingMessage #

Lịch sử

Thay đổi phiên bản
v15.5.0

Giá trị đã hủy trả về true sau khi dữ liệu đến được sử dụng.

v13.1.0, v12.16.0

Giá trị readableHighWaterMark phản ánh giá trị của socket.

v0.1.17

Đã thêm vào: v0.1.17

  • Phần mở rộng: & lt; stream.Readable & gt;

Đối tượng IncomingMessage được tạo bởi http.Server hoặc
http.ClientRequest và được chuyển làm đối số đầu tiên cho 'request'
và sự kiện 'response' tương ứng. Nó có thể được sử dụng để truy cập phản hồi
trạng thái, tiêu đề và dữ liệu.

Khác với giá trị socket , là lớp con của & lt; stream.Duplex & gt; ,
IncomingMessage tự nó mở rộng & lt; stream.Readable & gt; và được tạo riêng cho
phân tích cú pháp và phát ra các tiêu đề HTTP đến và tải trọng, dưới dạng ổ cắm bên dưới
có thể được tái sử dụng nhiều lần trong trường hợp vẫn còn sống.

Sự kiện: 'đã hủy bỏ' #

Đã thêm vào: v0.3.8

Không được dùng nữa kể từ: v17.0.0, v16.12.0

'close' sự kiện thay thế. Độ ổn định: 0 - Không được dùng nữa. Thay vào đó, hãy nghe forevent.

Được gửi khi yêu cầu đã bị hủy bỏ.

Sự kiện: 'close' #

Lịch sử

Thay đổi phiên bản
v16.0.0

Sự kiện đóng hiện được phát ra khi yêu cầu đã được hoàn thành chứ không phải khi ổ cắm bên dưới bị đóng.

v0.4.2

Đã thêm vào: v0.4.2

Được gửi khi yêu cầu đã được hoàn thành.

message.aborted #

Đã thêm vào: v10.1.0

Không được dùng nữa kể từ: v17.0.0, v16.12.0

message.destroyed from < span> Độ ổn định: 0 - Không được dùng nữa. Checkfrom & lt; stream.Readable & gt; ..

  • & lt; boolean & gt;

Thuộc tính message.aborted sẽ là true nếu yêu cầu có
đã bị hủy bỏ.

message.complete #

Đã thêm vào: v0.3.0

  • & lt; boolean & gt;

Thuộc tính message.complete sẽ là true nếu một thông báo HTTP hoàn chỉnh có
đã được nhận và phân tích cú pháp thành công.

Thuộc tính này đặc biệt hữu ích như một phương tiện xác định xem khách hàng hoặc
máy chủ đã truyền đầy đủ thông báo trước khi kết nối bị ngắt:

  

const

req = http.

request

({

host

:

'127.0.0.1'

,

cổng

:

8080

,

method

:

'POST'

},

(

res

) = & gt;

{ res.

sơ yếu lý lịch

(); res.

on

(

'end'

,

() = & gt;

{

nếu

(! res.

hoàn thành

)

console

.

error

(

'Kết nối đã bị ngắt trong khi tin nhắn vẫn đang được gửi'

); }); });

message.connection #

Đã thêm vào: v0.1.90

Không được dùng nữa kể từ: v16.0.0

Độ ổn định: 0 - Không được dùng nữa. Sử dụng message.socket

Bí danh cho message.socket .

message.destroy ([error]) #

Lịch sử

Thay đổi phiên bản
v14.5.0, v12.19.0

Hàm trả về this để nhất quán với các luồng Có thể đọc khác.

v0.3.0

Đã thêm vào: v0.3.0

  • error & lt; Lỗi & gt;
  • Trả về: & lt; this & gt;

Gọi kill () trên ổ cắm đã nhận được IncomingMessage . Nếu lỗi
được cung cấp, sự kiện 'error' được phát ra trên socket và error được chuyển
như một tranh luận cho bất kỳ người nghe nào về sự kiện.

message.headers #

Lịch sử

Thay đổi phiên bản
v15.1.0

message.headers hiện được tính toán một cách lười biếng bằng cách sử dụng thuộc tính trình truy cập trên nguyên mẫu và không còn có thể liệt kê được nữa.

v0.1.5

Đã thêm vào: v0.1.5

  • & lt; Đối tượng & gt;

Đối tượng tiêu đề yêu cầu / phản hồi.

Các cặp giá trị và tên tiêu đề. Tên tiêu đề được viết thường.

 
 
 
 
 

console

.

log

(request.

getHeaders ());

Các bản sao trong tiêu đề thô được xử lý theo những cách sau, tùy thuộc vào
tên tiêu đề:

  • Các bản sao của age , uỷ quyền , content-length , content-type ,
    etag , hết hạn , from , host , if-mod-since , < code> if-unmodified-since
    ,
    lần sửa đổi cuối cùng , vị trí , max-forwards , ủy quyền ủy quyền , giới thiệu ,
    thử lại sau , server hoặc user-agent bị hủy.
  • set-cookie luôn là một mảng. Các bản sao được thêm vào mảng.
  • Đối với các tiêu đề cookie trùng lặp, các giá trị được kết hợp với nhau bằng ; .
  • Đối với tất cả các tiêu đề khác, các giá trị được kết hợp với nhau bằng , .

message.headersDistinct #

Đã thêm vào: v18.3.0

  • & lt; Đối tượng & gt;

Tương tự như message.headers , nhưng không có logic nối và các giá trị là
luôn là mảng các chuỗi, ngay cả đối với các tiêu đề chỉ nhận được một lần.

 
 
 
 
 

console

.

log

(request.

headersDistinct );

message.httpVersion #

Đã thêm vào: v0.1.1

  • & lt; string & gt;

Trong trường hợp máy chủ yêu cầu, phiên bản HTTP do máy khách gửi. Trong trường hợp
phản hồi của máy khách, phiên bản HTTP của máy chủ được kết nối với.
Có thể là '1.1' hoặc '1.0' .

Ngoài ra, message.httpVersionMajor là số nguyên đầu tiên và
message.httpVersionMinor là thứ hai.

message.method #

Đã thêm vào: v0.1.1

  • & lt; string & gt;

Chỉ hợp lệ đối với yêu cầu nhận được từ http.Server .

Phương thức yêu cầu dưới dạng một chuỗi. Chỉ đọc. Ví dụ: 'GET' , 'DELETE' .

message.rawHeaders #

Đã thêm vào: v0.11.6

  • & lt; string [] & gt;

Tiêu đề yêu cầu / phản hồi thô liệt kê chính xác như khi chúng được nhận.

Các khóa và giá trị nằm trong cùng một danh sách. Nó không phải là
danh sách các bộ giá trị. Vì vậy, các hiệu số chẵn là các giá trị quan trọng và
các hiệu số lẻ là các giá trị được liên kết.

Tên tiêu đề không được viết thường và các tên trùng lặp không được hợp nhất.

 
 
 
 
 
 
 
 
 
 

console

.

log

(request.

rawHeaders );

message.rawTrailers #

Đã thêm vào: v0.11.6

  • & lt; string [] & gt;

Các khóa và giá trị của đoạn giới thiệu yêu cầu / phản hồi thô chính xác như ban đầu
nhận. Chỉ được điền vào sự kiện 'end' .

message.setTimeout (msecs [, callback]) #

Đã thêm vào: v0.5.9

  • msecs & lt; number & gt;
  • gọi lại & lt; Hàm & gt;
  • Trả về: & lt; http.IncomingMessage & gt;

Cuộc gọi message.socket.setTimeout (msecs, callback) .

message.socket #

Đã thêm vào: v0.3.0

  • & lt; stream.Duplex & gt;

Đối tượng net.Socket được liên kết với kết nối.

Với sự hỗ trợ của HTTPS, hãy sử dụng request.socket.getPeerCertificate () để có được
chi tiết xác thực của khách hàng.

Thuộc tính này được đảm bảo là bản sao của lớp & lt; net.Socket & gt; ,
một lớp con của & lt; stream.Duplex & gt; , trừ khi người dùng chỉ định một ổ cắm
nhập khác với & lt; net.Socket & gt; hoặc bị vô hiệu hóa nội bộ.

message.statusCode #

Đã thêm vào: v0.1.1

  • & lt; number & gt;

Chỉ hợp lệ đối với phản hồi nhận được từ http.ClientRequest .

Mã trạng thái phản hồi HTTP gồm 3 chữ số. VÍ DỤ. 404 .

message.statusMessage #

Đã thêm vào: v0.11.10

  • & lt; string & gt;

Chỉ hợp lệ đối với phản hồi nhận được từ http.ClientRequest .

Thông báo trạng thái phản hồi HTTP (cụm từ lý do). VÍ DỤ. OK hoặc Lỗi máy chủ nội bộ .

message.trailers #

Đã thêm vào: v0.3.0

  • & lt; Đối tượng & gt;

Đối tượng đoạn giới thiệu yêu cầu / phản hồi. Chỉ được điền vào sự kiện 'end' .

message.trailersDistinct #

Đã thêm vào: v18.3.0

  • & lt; Đối tượng & gt;

Tương tự như message.trailers , nhưng không có logic nối và các giá trị là
luôn là mảng chuỗi, ngay cả đối với các tiêu đề chỉ nhận một lần.
Chỉ được điền vào sự kiện 'end' .

message.url #

Đã thêm vào: v0.1.90

  • & lt; string & gt;

Chỉ hợp lệ đối với yêu cầu nhận được từ http.Server .

Chuỗi URL yêu cầu. Điều này chỉ chứa URL có trong thực tế
Yêu cầu HTTP. Thực hiện yêu cầu sau:

  

NHẬN

/ status? name = ryan

Chấp nhận

:

text / trơn

Để phân tích cú pháp URL thành các phần của nó:

  

new

URL

(yêu cầu.

url

,

`http: //

$ {request.getHeaders (). host}

`

);

Khi request.url '/ status? name = ryan'
request.getHeaders (). host 'localhost: 3000' :

Nút

  

$

& gt;

URL mới (request.url, `http: //

$ {request.getHeaders (). host}

`)

URL { href: 'http: // localhost: 3000 / status? name = ryan', origin: 'http: // localhost: 3000', giao thức: 'http:', tên tài khoản: '', mật khẩu mở khóa: '', máy chủ: 'localhost: 3000', tên máy chủ: 'localhost', cổng: '3000', tên đường dẫn: '/ status', tìm kiếm: '? name = ryan', searchParams: URLSearchParams {'name' = & gt; 'ryan'}, băm: '' }

Lớp: http.OutgoingMessage #

Đã thêm vào: v0.1.17

  • Phần mở rộng: & lt; Luồng & gt;

Lớp này đóng vai trò là lớp cha của http.ClientRequest
http.ServerResponse . Đó là một thông điệp gửi đi trừu tượng từ
quan điểm của những người tham gia giao dịch HTTP.

Sự kiện: 'Cống' #

Đã thêm vào: v0.3.6

Được phát ra khi bộ đệm của thư trống trở lại.

Sự kiện: 'finish' #

Đã thêm vào: v0.1.17

Được phát ra khi quá trình truyền kết thúc thành công.

Sự kiện: 'prefinish' #

Đã thêm vào: v0.11.6

Được phát ra sau khi outgoingMessage.end () được gọi.
Khi sự kiện được phát ra, tất cả dữ liệu đã được xử lý nhưng không nhất thiết
hoàn toàn đỏ bừng.

outgoingMessage.addTrailers (headers) #

Đã thêm vào: v0.3.0

  • tiêu đề & lt; Đối tượng & gt;

Thêm đoạn giới thiệu HTTP (tiêu đề nhưng ở cuối thư) vào thư.

Đoạn giới thiệu sẽ chỉ được phát ra nếu thư được mã hóa thành từng đoạn. Nếu không,
các đoạn giới thiệu sẽ bị loại bỏ một cách âm thầm.

HTTP yêu cầu gửi tiêu đề Đoạn giới thiệu để tạo đoạn giới thiệu,
với danh sách các tên trường tiêu đề trong giá trị của nó, ví dụ:

  message. 

writeHead

(

200

, {< p class = "hljs-string"> 'Content-Type'

:

'text / trơn'

,

'Đoạn giới thiệu'

:

'Content-MD5'

}); tin nhắn.

write

(fileData); tin nhắn.

addTrailers

({

'Content-MD5'

:

'7895bf4b8828b55ceaf47747b4bca667'

}); tin nhắn.

end

();

Cố gắng đặt tên hoặc giá trị trường tiêu đề có chứa các ký tự không hợp lệ
sẽ dẫn đến một TypeError được ném ra.

outgoingMessage.appendHeader (tên, giá trị) #

Đã thêm vào: v18.3.0

  • name & lt; string & gt; Tên tiêu đề
  • giá trị & lt; string & gt; | & lt; string [] & gt; Giá trị tiêu đề
  • Trả về: & lt; this & gt;

Nối một giá trị tiêu đề duy nhất cho đối tượng tiêu đề.

Nếu giá trị là một mảng, điều này tương đương với việc gọi phương thức này là bội số
lần.

Nếu không có giá trị nào trước đó cho tiêu đề, điều này tương đương với việc gọi
outgoingMessage.setHeader (tên, giá trị) .

Tùy thuộc vào giá trị của options.uniqueHeaders khi khách hàng yêu cầu hoặc
máy chủ đã được tạo, điều này sẽ dẫn đến việc tiêu đề được gửi nhiều lần hoặc
một lần duy nhất với các giá trị được kết hợp bằng cách sử dụng ; .

outgoingMessage.connection #

Đã thêm vào: v0.3.0

Không được dùng nữa kể từ: v15.12.0, v14.17.1

Độ ổn định: 0 - Không dùng nữa: Sử dụng outgoingMessage.socket để thay thế.

Bí danh của outgoingMessage.socket .

outgoingMessage.cork () #

Đã thêm vào: v13.2.0, v12.16.0

Xem writeable.cork () .

outgoingMessage.destroy ([error]) #

Đã thêm vào: v0.3.0

  • error & lt; Error & gt; Tùy chọn, lỗi phát ra với sự kiện error
  • Trả về: & lt; this & gt;

Hủy tin nhắn. Sau khi một ổ cắm được liên kết với thông báo
và được kết nối, ổ cắm đó cũng sẽ bị phá hủy.

outgoingMessage.end (chunk [, encoding] [, callback]) # < / span>

Lịch sử

Thay đổi phiên bản
v0.11.6

thêm đối số callback .

v0.1.90

Đã thêm vào: v0.1.90

  • chunk & lt; string & gt; | & lt; Bộ đệm & gt;
  • mã hóa & lt; string & gt; Tùy chọn, Mặc định : utf8
  • gọi lại & lt; Hàm & gt; Tùy chọn
  • Trả về: & lt; this & gt;

Hoàn tất thư gửi đi. Nếu bất kỳ bộ phận nào của cơ thể không được gửi đi, nó sẽ
xả chúng vào hệ thống cơ bản. Nếu tin nhắn được chia nhỏ, nó sẽ
gửi đoạn kết thúc 0 \ r \ n \ r \ n và gửi đoạn giới thiệu (nếu có).

Nếu chunk được chỉ định, nó tương đương với gọi
outgoingMessage.write (chunk, encoding) , theo sau là
outgoingMessage.end (gọi lại) .

Nếu callback được cung cấp, nó sẽ được gọi khi thông báo kết thúc
(tương đương với trình nghe của sự kiện 'finish' ).

outgoingMessage.flushHeaders () #

Đã thêm vào: v1.6.0

Xóa tiêu đề thư.

Vì lý do hiệu quả, Node.js thường đệm các tiêu đề thư
cho đến khi outgoingMessage.end () được gọi hoặc đoạn dữ liệu thư đầu tiên
được viết. Sau đó, nó cố gắng đóng gói các tiêu đề và dữ liệu vào một TCP duy nhất
gói.

Nó thường được mong muốn (nó lưu TCP khứ hồi), nhưng không phải khi lần đầu tiên
dữ liệu sẽ không được gửi cho đến khi có thể muộn hơn nhiều. outgoingMessage.flushHeaders ()
bỏ qua tối ưu hóa và bắt đầu thông báo.

outgoingMessage.getHeader (name) #

Đã thêm vào: v0.4.0

  • name & lt; string & gt; Tên tiêu đề
  • Trả về & lt; string & gt; | & lt; undefined & gt;

Nhận giá trị của tiêu đề HTTP với tên đã cho. Nếu tiêu đề đó không
được đặt, giá trị trả về sẽ là không xác định .

outgoingMessage.getHeaderNames () #

Đã thêm vào: v7.7.0

  • Trả về & lt; string [] & gt;

Trả về một mảng chứa các tên duy nhất của các tiêu đề gửi đi hiện tại.
Tất cả các tên đều là chữ thường.

outgoingMessage.getHeaders () #

Đã thêm vào: v7.7.0

  • Trả về: & lt; Đối tượng & gt;

Trả về bản sao ngắn của các tiêu đề gửi đi hiện tại. Kể từ khi nông cạn
bản sao được sử dụng, các giá trị mảng có thể bị thay đổi mà không cần các lệnh gọi bổ sung tới
các phương pháp mô-đun HTTP liên quan đến tiêu đề khác nhau. Chìa khóa của trả lại
đối tượng là tên tiêu đề và các giá trị là tiêu đề tương ứng
các giá trị. Tất cả các tên tiêu đề đều là chữ thường.

Đối tượng được trả về bởiPhương thức outgoingMessage.getHeaders () không
không kế thừa nguyên mẫu từ JavaScript Object . Điều này có nghĩa rằng
các phương thức Object điển hình như obj.toString () , obj.hasOwnProperty () ,
và những thứ khác không được xác định và sẽ không hoạt động.

  outgoingMessage. 

setHeader

(

'Foo'

,

'bar'

); outgoingMessage.

setHeader

(

'Set-Cookie'

, [

'foo = bar'

,

'bar = baz'

]);

const

headers = outgoingMessage.

getHeaders

();

outgoingMessage.hasHeader (name) #

Đã thêm vào: v7.7.0

  • name & lt; string & gt;
  • Trả về & lt; boolean & gt;

Trả về true nếu tiêu đề được xác định bởi name hiện được đặt trong
tiêu đề gửi đi. Tên tiêu đề không phân biệt chữ hoa chữ thường.

  

const

hasContentType = outgoingMessage.

hasHeader

(< p class = "hljs-string"> 'content-type'

);

outgoingMessage.headersSent #

Đã thêm vào: v0.9.3

  • & lt; boolean & gt;

Chỉ đọc. true nếu tiêu đề được gửi, nếu không thì false .

outgoingMessage.pipe () #

Đã thêm vào: v9.0.0

Ghi đè phương thức stream.pipe () được kế thừa từ lớp Stream kế thừa
là lớp cha của http.OutgoingMessage .

Gọi phương thức này sẽ tạo ra một Error outgoingMessage là một
luồng chỉ ghi.

outgoingMessage.removeHeader (name) #

Đã thêm vào: v0.4.0

  • name & lt; string & gt; Tên tiêu đề

Xóa tiêu đề được xếp hàng đợi để gửi ẩn.

  outgoingMessage. 

removeHeader

(

'Content-Encoding' );

outgoingMessage.setHeader (tên, giá trị) #

Đã thêm vào: v0.4.0

  • name & lt; string & gt; Tên tiêu đề
  • value & lt; bất kỳ & gt; Giá trị tiêu đề nào
  • Trả về: & lt; this & gt;

Đặt một giá trị tiêu đề duy nhất. Nếu tiêu đề đã tồn tại trong thư được gửi
tiêu đề, giá trị của nó sẽ được thay thế. Sử dụng một mảng các chuỗi để gửi nhiều
các tiêu đề trùng tên.

outgoingMessage.setTimeout (msesc [, callback]) #

Đã thêm vào: v0.9.12

  • msesc & lt; number & gt;
  • gọi lại & lt; Hàm & gt; Hàm tùy chọn được gọi khi hết giờ
    xảy ra. Giống như ràng buộc với sự kiện timeout .
  • Trả về: & lt; this & gt;

Sau khi một ổ cắm được liên kết với tin nhắn và được kết nối,
socket.setTimeout () sẽ được gọi với msecs làm tham số đầu tiên.

outgoingMessage.socket #

Đã thêm vào: v0.3.0

  • & lt; stream.Duplex & gt;

Tham chiếu đến ổ cắm bên dưới. Thông thường, người dùng sẽ không muốn truy cập
tài sản này.

Sau khi gọi outgoingMessage.end () , thuộc tính này sẽ bị vô hiệu hóa.

outgoingMessage.uncork () #

Đã thêm vào: v13.2.0, v12.16.0

Xem writeable.uncork ()

outgoingMessage.wainedCorked #

Đã thêm vào: v13.2.0, v12.16.0

  • & lt; number & gt;

Số lần outgoingMessage.cork () đã được gọi.

outgoingMessage.wectsEnded #

Đã thêm vào: v12.9.0

  • & lt; boolean & gt;

true nếu outgoingMessage.end () đã được gọi. Tài sản này không
không cho biết liệu dữ liệu đã được xóa. Với mục đích đó, hãy sử dụng
Thay vào đó, message.wariesFinishing .

outgoingMessage.wualityFinishing #

Đã thêm vào: v12.7.0

  • & lt; boolean & gt;

true nếu tất cả dữ liệu đã được chuyển vào hệ thống cơ bản.

outgoingMessage.wainedHighWaterMark #

Đã thêm vào: v12.9.0

  • & lt; number & gt;

highWaterMark của ổ cắm bên dưới nếu được chỉ định. Nếu không, mặc định
mức đệm khi writeable.write () bắt đầu trả về false ( 16384 ).

outgoingMessage.wualityLength #

Đã thêm vào: v12.9.0

  • & lt; number & gt;

Số lượng byte được đệm.

outgoingMessage.wainedObjectMode #

Đã thêm vào: v12.9.0

  • & lt; boolean & gt;

Luôn false .

outgoingMessage.write (chunk [, encoding] [, callback]) # < / span>

Lịch sử

Thay đổi phiên bản
v0.11.6

Đối số callback đã được thêm.

v0.1.29

Đã thêm vào: v0.1.29

  • chunk & lt; string & gt; | & lt; Bộ đệm & gt;
  • mã hóa & lt; string & gt; Mặc định : utf8
  • gọi lại & lt; Hàm & gt;
  • Trả về & lt; boolean & gt;

Gửi một đoạn nội dung. Phương thức này có thể được gọi nhiều lần.

Đối số encoding chỉ có liên quan khi chunk là một chuỗi. Mặc định là
'utf8' .

Đối số callback là tùy chọn và sẽ được gọi khi phân đoạn dữ liệu này
đỏ bừng.

Trả về true nếu toàn bộ dữ liệu đã được chuyển thành công vào hạt nhân
đệm. Trả về false nếu tất cả hoặc một phần dữ liệu đã được xếp hàng đợi trong người dùng
kỉ niệm. Sự kiện 'dra' sẽ được phát ra khi bộ đệm trống trở lại.

http.METHODS #

Đã thêm vào: v0.11.8

  • & lt; string [] & gt;

Danh sách các phương thức HTTP được trình phân tích cú pháp hỗ trợ.

http.STATUS_CODES #

Đã thêm vào: v0.1.22

  • & lt; Đối tượng & gt;

Tập hợp tất cả các mã trạng thái phản hồi HTTP tiêu chuẩn và
mô tả ngắn của mỗi. Ví dụ: http.STATUS_CODES [404] === 'Không tìm thấy' .

http.createServer ([options] [, requestListener]) #

Lịch sử

Thay đổi phiên bản
v18.0.0

Các tùy chọn requestTimeout , headersTimeout , keepAliveTimeout connectionCheckingInterval hiện được hỗ trợ.

v18.0.0

Tùy chọn noDelay hiện được mặc định thành true .

v17.7.0

Các tùy chọn noDelay , keepAlive keepAliveInitialDelay hiện được hỗ trợ.

v13.3.0

Tùy chọn maxHeaderSize hiện được hỗ trợ.

v13.8.0, v12.15.0, v10.19.0

Tùy chọn secureHTTPParser hiện được hỗ trợ.

v9.6.0, v8.12.0

Đối số options hiện được hỗ trợ.

v0.1.13

Đã thêm vào: v0.1.13

  • tùy chọn & lt; Đối tượng & gt;

    • IncomingMessage & lt; http.IncomingMessage & gt; Chỉ định IncomingMessage
      lớp sẽ được sử dụng. Hữu ích để mở rộng IncomingMessage gốc.
      Mặc định: IncomingMessage .
    • ServerResponse & lt; http.ServerResponse & gt; Chỉ định lớp ServerResponse
      được sử dụng. Hữu ích để mở rộng ServerResponse ban đầu. Mặc định:
      ServerResponse .
    • requestTimeout : Đặt giá trị thời gian chờ tính bằng mili giây để nhận
      toàn bộ yêu cầu từ khách hàng.
      Xem server.requestTimeout để biết thêm thông tin.
      Mặc định: 300000 .
    • headersTimeout : Đặt giá trị thời gian chờ tính bằng mili giây để nhận
      các tiêu đề HTTP hoàn chỉnh từ máy khách.
      Xem server.headersTimeout để biết thêm thông tin.
      Mặc định: 60000 .
    • keepAliveTimeout : Số mili giây không hoạt động của một máy chủ
      cần đợi dữ liệu đến bổ sung, sau khi ghi xong
      phản hồi cuối cùng, trước khi ổ cắm bị phá hủy.
      Xem server.keepAliveTimeout để biết thêm thông tin.
      Mặc định: 5000 .
    • resultsCheckingInterval : Đặt giá trị khoảng thời gian tính bằng mili giây thành
      kiểm tra yêu cầu và thời gian chờ của tiêu đề trong các yêu cầu không đầy đủ.
      Mặc định: 30000 .
    • không an toànHTTPParser & lt; boolean & gt; Sử dụng trình phân tích cú pháp HTTP không an toàn chấp nhận
      tiêu đề HTTP không hợp lệ khi true . Sử dụng trình phân tích cú pháp không an toàn sẽ
      tránh được. Xem --insecure-http-parser để biết thêm thông tin.
      Mặc định: false
    • maxHeaderSize & lt; number & gt; Tùy ý ghi đè giá trị của
      --max-http-header-size cho các yêu cầu do máy chủ này nhận được, tức là
      độ dài tối đa của tiêu đề yêu cầu tính bằng byte.
      Mặc định: 16384 (16 KiB).
    • noDelay & lt; boolean & gt; Nếu được đặt thành true , nó sẽ vô hiệu hóa việc sử dụng Nagle's
      thuật toán ngay sau khi nhận được kết nối mới.
      Mặc định: true .
    • keepAlive & lt; boolean & gt; Nếu được đặt thành true , nó sẽ bật chức năng duy trì hoạt động
      trên ổ cắm ngay sau khi nhận được kết nối mới,
      tương tự với những gì được thực hiện trong [ socket.setKeepAlive ([enable] [, initialDelay]) ] [ socket.setKeepAlive (enable, initialDelay) ].
      Mặc định: false .
    • keepAliveInitialDelay & lt; number & gt; Nếu được đặt thành một số dương, nó sẽ đặt
      độ trễ ban đầu trước khi đầu dò lưu giữ đầu tiên được gửi trên một ổ cắm không hoạt động.
      Mặc định: 0 .
    • uniqueHeaders & lt; Array & gt; Danh sách các tiêu đề phản hồi chỉ nên được gửi
      Một lần. Nếu giá trị của tiêu đề là một mảng, các mục sẽ được nối với nhau
      sử dụng ; .
  • requestListener & lt; Hàm & gt;

  • Trả về: & lt; http.Server & gt;

Trả về một phiên bản mới của http.Server .

requestListener là một hàm tự động
được thêm vào sự kiện 'request' .

  

const

http =

request

(

'nút: http'

);

const

server = http.

createServer

(

(

req, res

) = & gt;

{ res.

writeHead

(

200

, {

'Content-Type' < / p>:

'application / json'

}); res.

end

(

JSON

.

stringify ({

data

:

'Hello World!'

})); }); máy chủ.

nghe

(

8000

);
  

const

http =

request

(

'nút: http'

);

const

server = http.

createServer

(); máy chủ.

on

(

'request'

,

(

request, res

) = & gt;

{ res.

writeHead

(

200

, {

'Content-Type '

:

' application / json '

}); res.

end

(

JSON

.

stringify ({

data

:

'Hello World!'

})); }); máy chủ.

nghe

(

8000

);

http.get (url [, options] [, callback]) # < / span>

Lịch sử

Thay đổi phiên bản
v10.9.0

Tham số url hiện có thể được chuyển cùng với đối tượng options riêng biệt.

v7.5.0

Tham số options có thể là đối tượng WHATWG URL .

v0.3.6

Đã thêm vào: v0.3.6

  • url & lt; string & gt; | & lt; URL & gt;
  • tùy chọn & lt; Đối tượng & gt; Chấp nhận các tùy chọn giống như
    http.request () , với phương thức luôn được đặt thành GET .
    Các thuộc tính kế thừa từ nguyên mẫu sẽ bị bỏ qua.
  • gọi lại & lt; Hàm & gt;
  • Trả về: & lt; http.ClientRequest & gt;

Vì hầu hết các yêu cầu là yêu cầu GET không có phần thân, Node.js cung cấp điều này
phương pháp tiện lợi. Sự khác biệt duy nhất giữa phương pháp này và
http.request () là nó đặt phương thức thành GET và gọi req.end ()
tự động. Việc gọi lại phải cẩn thận để sử dụng phản hồi
dữ liệu vì các lý do được nêu trong phần http.ClientRequest .

callback được gọi bằng một đối số duy nhất là một phiên bản của
http.IncomingMessage .

Ví dụ tìm nạp JSON:

  http. 

get

(

'http: // localhost: 8000 / '

,

(

res

) = & gt;

{

const

{statusCode} = res;

const

contentType = res.

tiêu đề

[

'content-type'

];

để xảy ra lỗi

;

if

(statusCode! ==

200

) { error =

new

Lỗi

(

'Yêu cầu Không thành công. \ n '

+

`Mã trạng thái:

$ {statusCode}

`

); }

else

if

(!

/ ^ application \ / json /

.

test

(contentType)) { error =

new

Lỗi

(

'Content-type không hợp lệ. \ n '

+

`Ứng dụng mong muốn / json nhưng đã nhận được

$ {contentType}

`

); }

nếu

(error) {

console

.

error

(error.

message ); res.

sơ yếu lý lịch

();

trả về

; } res.

setEncoding

(

'utf8'

);

let

rawData =

''

; res.

on

(

'data'

,

(

chunk

) = & gt;

{rawData + = chunk;}); res.

on

(

'end'

,

() = & gt;

{

thử

{

const

parsedData =

JSON

.

parse

(dữ liệu thô);

console

.

log

(parsedData); }

bắt

(e) {

console

.

error

(e.

message ); } }); }).

on

(

'error'

,

(< p class = "hljs-params"> e

) = & gt;

{

console

.

error

(

`Có lỗi:

$ {e.message}

`

); });

const

server = http.

createServer

(

(

req, res

) = & gt;

{ res.

writeHead

(

200

, {

'Content-Type '

:

' application / json '

}); res.

end

(

JSON

.

stringify ({

data

:

'Hello World!'

})); }); máy chủ.

nghe

(

8000

);

http.globalAgent #

Đã thêm vào: v0.5.9

  • & lt; http.Agent & gt;

Phiên bản chung của Agent được sử dụng làm mặc định cho tất cả ứng dụng HTTP
yêu cầu.

http.maxHeaderSize #

Đã thêm vào: v11.6.0, v10.15.0

  • & lt; number & gt;

Thuộc tính chỉ đọc chỉ định kích thước tối đa được phép của tiêu đề HTTP tính bằng byte.
Mặc định là 16 KiB. Có thể định cấu hình bằng CLI --max-http-header-size
tùy chọn.

Điều này có thể được ghi đè đối với các máy chủ và yêu cầu của khách hàng bằng cách chuyển
Tùy chọn maxHeaderSize .

http.request (url [, options] [, callback]) # < / span>

Lịch sử

Thay đổi phiên bản
v16.7.0, v14.18.0

Khi sử dụng đối tượng URL , tên người dùng và mật khẩu được phân tích cú pháp bây giờ sẽ được giải mã đúng URI.

v15.3.0, v14.17.0

Có thể hủy bỏ yêu cầu bằng AbortSignal.

v13.3.0

Tùy chọn maxHeaderSize hiện được hỗ trợ.

v13.8.0, v12.15.0, v10.19.0

Tùy chọn secureHTTPParser hiện được hỗ trợ.

v10.9.0

Tham số url hiện có thể được chuyển cùng với đối tượng options riêng biệt.

v7.5.0

Tham số options có thể là đối tượng WHATWG URL .

v0.3.6

Đã thêm vào: v0.3.6

  • url & lt; string & gt; | & lt; URL & gt;
  • tùy chọn & lt; Đối tượng & gt;
    • agent & lt; http.Agent & gt; | & lt; boolean & gt; Kiểm soát hành vi của Agent . Khả thi
      giá trị:

      • undefined (default): sử dụng http.globalAgent cho máy chủ và cổng này.
      • Đối tượng

      • Agent : sử dụng rõ ràng giá trị được chuyển vào Agent .
      • false : khiến một Agent mới với các giá trị mặc định được sử dụng.
    • auth & lt; string & gt; Xác thực cơ bản ( 'user: password' ) để tính
      Tiêu đề ủy quyền.
    • createConnection & lt; Hàm & gt; Một hàm tạo ra một ổ cắm / luồng tới
      sử dụng cho yêu cầu khi tùy chọn agent không được sử dụng. Điều này có thể được sử dụng để
      tránh tạo một lớp Agent tùy chỉnh chỉ để ghi đè lên lớp mặc định
      Hàm createConnection . Xem agent.createConnection () để biết thêm
      thông tin chi tiết. Mọi luồng Duplex đều là giá trị trả về hợp lệ.
    • defaultPort & lt; number & gt; Cổng mặc định cho giao thức. Mặc định:
      agent.defaultPort nếu Agent được sử dụng, thì undefined .
    • family & lt; number & gt; họ địa chỉ IP để sử dụng khi phân giải host hoặc
      tên máy chủ . Giá trị hợp lệ là 4 hoặc 6. Khi không xác định, cả IP v4 và
      v6 sẽ được sử dụng.
    • headers & lt; Object & gt; Một đối tượng chứa các tiêu đề yêu cầu.
    • gợi ý & lt; number & gt; dns.lookup () gợi ý tùy chọn. < / li>
    • host & lt; string & gt; Tên miền hoặc địa chỉ IP của máy chủ để cấp
      yêu cầu. Mặc định: 'localhost' .
    • tên máy chủ & lt; string & gt; Bí danh cho máy chủ lưu trữ . Để hỗ trợ url.parse () ,
      tên máy chủ sẽ được sử dụng nếu cả máy chủ tên máy chủ đều được chỉ định.
    • không an toànHTTPParser & lt; boolean & gt; Sử dụng trình phân tích cú pháp HTTP không an toàn chấp nhận
      tiêu đề HTTP không hợp lệ khi true . Sử dụng trình phân tích cú pháp không an toàn sẽ
      tránh được. Xem --insecure-http-parser để biết thêm thông tin.
      Mặc định: false
    • localAddress & lt; string & gt; Giao diện cục bộ để liên kết cho các kết nối mạng.
    • localPort & lt; number & gt; Cổng cục bộ để kết nối.
    • tra cứu & lt; Chức năng & gt; Chức năng tra cứu tùy chỉnh. Mặc định: dns.lookup () .
    • maxHeaderSize & lt; number & gt; Tùy ý ghi đè giá trị của
      --max-http-header-size (độ dài tối đa của tiêu đề phản hồi trong
      byte) cho các phản hồi nhận được từ máy chủ.
      Mặc định: 16384 (16 KiB).
    • method & lt; string & gt; Một chuỗi chỉ định phương thức yêu cầu HTTP. Mặc định:
      'GET' .
    • đường dẫn & lt; string & gt; Đường dẫn yêu cầu. Nên bao gồm chuỗi truy vấn nếu có.
      VÍ DỤ. '/index.html?page=12' . Một ngoại lệ được đưa ra khi đường dẫn yêu cầu
      chứa các ký tự bất hợp pháp. Hiện tại, chỉ có khoảng trắng bị từ chối nhưng điều đó
      có thể thay đổi trong tương lai. Mặc định: '/' .
    • cổng & lt; number & gt; Cổng của máy chủ từ xa. Mặc định: defaultPort nếu được đặt,
      khác 80 .
    • giao thức & lt; string & gt; Giao thức để sử dụng. Mặc định: 'http:' .
    • setHost & lt; boolean & gt; : Chỉ định xem có tự động thêm
      Tiêu đề Máy chủ . Mặc định là true .
    • signal & lt; AbortSignal & gt; : Một AbortSignal có thể được sử dụng để hủy bỏ một
      yêu cầu.
    • socketPath & lt; string & gt; Ổ cắm miền Unix. Không thể sử dụng nếu một trong máy chủ
      hoặc cổng được chỉ định, vì chúng chỉ định Cổng TCP.
    • timeout & lt; number & gt; : Một số chỉ định thời gian chờ socket tính bằng mili giây.
      Điều này sẽ đặt thời gian chờ trước khi ổ cắm được kết nối.
    • uniqueHeaders & lt; Array & gt; Danh sách các tiêu đề yêu cầu sẽ được gửi
      chỉ một lần. Nếu giá trị của tiêu đề là một mảng, các mục sẽ được nối với nhau
      sử dụng ; .
  • gọi lại & lt; Hàm & gt;
  • Trả về: & lt; http.ClientRequest & gt;

tùy chọn trong socket.connect () cũng được hỗ trợ.

Node.js duy trì một số kết nối trên mỗi máy chủ để thực hiện các yêu cầu HTTP.
Chức năng này cho phép một người đưa ra các yêu cầu một cách minh bạch.

url có thể là một chuỗi hoặc một đối tượng URL . Nếu url
chuỗi, nó được tự động phân tích cú pháp với URL mới () . Nếu đó là URL
, nó sẽ được tự động chuyển đổi thành một đối tượng options thông thường.

Nếu cả hai tùy chọn url đều được chỉ định, các đối tượng sẽ được hợp nhất, với
Các thuộc tính tùy chọn được ưu tiên.

Tham số callback tùy chọn sẽ được thêm vào dưới dạng trình nghe một lần cho
sự kiện 'response' .

http.request () trả về một bản sao của http.ClientRequest
lớp. Bản sao ClientRequest là một luồng có thể ghi. Nếu ai đó cần
tải lên tệp có yêu cầu ĐĂNG, sau đó ghi vào đối tượng ClientRequest .

  

const

http =

request

(

'nút: http'

);

const

postData =

JSON

.

stringify

({

'msg'

:

'Hello World!'

});

const

options = {

tên máy chủ

:

'www.google.com'

,

cổng

:

80

,

path

:

'/ upload'

,

method

:

'POST'

,

tiêu đề

: {

'Content-Type'

:

'application / json'

,

'Content-Length'

:

Bộ đệm

.

byteLength < / p> (postData) } };

const

req = http.

request

(options,

(< p class = "hljs-params"> res

) = & gt;

{

console

.

log

(

`STATUS:

$ {res.statusCode}

`

);

console

.

log

(

`HEADERS:

$ {

JSON

.stringify (res.headers)}

`

); res.

setEncoding

(

'utf8'

); res.

on

(

'data'

,

(

chunk

) = & gt;

{

console

.

log

(

`BODY:

$ {chunk}

`

); }); res.

on

(

'end'

,

() = & gt;

{

console

.

log

(

'Không có thêm dữ liệu nào được phản hồi . '

); }); }); yêu cầu

on

(

'error'

,

(

e

) = & gt;

{

console

.

error

(

`vấn đề với yêu cầu: < p class = "hljs-subst"> $ {e.message}

`

); }); req.

write

(postData); yêu cầu

end

();

Trong ví dụ, req.end () đã được gọi. Với http.request () một
phải luôn gọi req.end () để biểu thị sự kết thúc của yêu cầu -
ngay cả khi không có dữ liệu nào được ghi vào cơ quan yêu cầu.

Nếu gặp bất kỳ lỗi nào trong quá trình yêu cầu (có thể là với độ phân giải DNS,
Lỗi cấp TCP hoặc lỗi phân tích cú pháp HTTP thực tế) một sự kiện 'error' được phát ra
trên đối tượng yêu cầu trả về. Như với tất cả các sự kiện 'error' , nếu không có trình nghe
được đăng ký, lỗi sẽ được ném ra.

Có một số tiêu đề đặc biệt cần được lưu ý.

  • Gửi 'Kết nối: giữ nguyên' sẽ thông báo cho Node.js rằng kết nối tới
    máy chủ sẽ được duy trì cho đến khi có yêu cầu tiếp theo.

  • Gửi tiêu đề 'Độ dài nội dung' sẽ vô hiệu hóa mã hóa phân đoạn mặc định.

  • Gửi tiêu đề 'Kỳ vọng' sẽ ngay lập tức gửi tiêu đề yêu cầu.
    Thông thường, khi gửi 'Kỳ vọng: 100-tiếp tục', cả thời gian chờ và trình nghe
    cho sự kiện 'continue' nên được đặt. Xem RFC 2616 Phần 8.2.3 để biết thêm
    thông tin.

  • Gửi tiêu đề Ủy quyền sẽ ghi đè bằng cách sử dụng tùy chọn auth
    để tính toán xác thực cơ bản.

Ví dụ sử dụng URL làm tùy chọn :

  

const

options =

mới

URL

(

'http: // abc: [email được bảo vệ ]

const

req = http.

request

(tùy chọn ,

(

res

) = & gt;

{ });

Trong một yêu cầu thành công, các sự kiện sau sẽ được phát ra như sau
đặt hàng:

  • 'socket'
  • 'response'
    • 'data' bất kỳ số lần nào, trên đối tượng res
      ( 'data' sẽ hoàn toàn không được phát ra nếu nội dung phản hồi trống, đối với
      ví dụ, trong hầu hết các chuyển hướng)
    • 'end' trên đối tượng res
  • 'close'

Trong trường hợp lỗi kết nối, các sự kiện sau sẽ được phát ra:

  • 'socket'
  • 'error'
  • 'close'

Trong trường hợp kết nối sớm bị đóng trước khi nhận được phản hồi,
các sự kiện sau sẽ được phát theo thứ tự sau:

  • 'socket'
  • 'error' có lỗi với thông báo 'Error: socket treo lên' và mã
    'ECONNRESET'
  • 'close'

Trong trường hợp kết nối sớm bị đóng sau khi nhận được phản hồi,
các sự kiện sau sẽ được phát theo thứ tự sau:

  • 'socket'
  • 'response'
    • 'data' bất kỳ số lần nào, trên đối tượng res
  • (kết nối đã đóng tại đây)
  • 'đã bị hủy bỏ' trên đối tượng res
  • 'error' trên đối tượng res có lỗi với thông báo
    'Lỗi: bị hủy bỏ' và mã 'ECONNRESET' .
  • 'close'
  • 'close' trên đối tượng res

Nếu req.destroy () được gọi trước khi một ổ cắm được chỉ định, như sau
các sự kiện sẽ được phát ra theo thứ tự sau:

  • ( req.destroy () được gọi ở đây)
  • 'error' có lỗi với thông báo 'Error: socket treo lên' và mã
    'ECONNRESET'
  • 'close'

Nếu req.destroy () được gọi trước khi kết nối thành công, như sau
các sự kiện sẽ được phát ra theo thứ tự sau:

  • 'socket'
  • ( req.destroy () được gọi ở đây)
  • 'error' có lỗi với thông báo 'Error: socket treo lên' và mã
    'ECONNRESET'
  • 'close'

Nếu req.destroy () được gọi sau khi nhận được phản hồi, như sau
các sự kiện sẽ được phát ra theo thứ tự sau:

  • 'socket'
  • 'response'
    • 'data' bất kỳ số lần nào, trên đối tượng res
  • ( req.destroy () được gọi ở đây)
  • 'đã bị hủy bỏ' trên đối tượng res
  • 'error' trên đối tượng res có lỗi với thông báo
    'Lỗi: bị hủy bỏ' và mã 'ECONNRESET' .
  • 'close'
  • 'close' trên đối tượng res

Nếu req.abort () được gọi trước khi một ổ cắm được chỉ định, như sau
các sự kiện sẽ được phát ra theo thứ tự sau:

  • ( req.abort () được gọi ở đây)
  • 'abort'
  • 'close'

Nếu req.abort () được gọi trước khi kết nối thành công, như sau
các sự kiện sẽ được phát ra theo thứ tự sau:

  • 'socket'
  • ( req.abort () được gọi ở đây)
  • 'abort'
  • 'error' có lỗi với thông báo 'Error: socket treo lên' và mã
    'ECONNRESET'
  • 'close'

Nếu req.abort () được gọi sau khi nhận được phản hồi, như sau
các sự kiện sẽ được phát ra theo thứ tự sau:

  • 'socket'
  • 'response'
    • 'data' bất kỳ số lần nào, trên đối tượng res
  • ( req.abort () được gọi ở đây)
  • 'abort'
  • 'đã bị hủy bỏ' trên đối tượng res
  • 'error' trên đối tượng res có lỗi với thông báo
    'Lỗi: bị hủy bỏ' và mã 'ECONNRESET' .
  • 'close'
  • 'close' trên đối tượng res

Đặt tùy chọn timeout hoặc sử dụng hàm setTimeout () sẽ
không hủy bỏ yêu cầu hoặc làm bất cứ điều gì ngoài việc thêm sự kiện 'timeout' .

Chuyển một AbortSignal và sau đó gọi abort tương ứng
AbortController sẽ hoạt động giống như cách gọi .destroy () trên
yêu cầu chính nó.

http.validateHeaderName (tên)

Đã thêm vào: v14.3.0

  • name & lt; string & gt;

Thực hiện xác thực cấp thấp đối với name được cung cấp, được thực hiện khi
res.setHeader (tên, giá trị) được gọi.

Chuyển giá trị bất hợp pháp dưới dạng name sẽ dẫn đến việc tạo ra TypeError ,
được xác định bằng mã : 'ERR_INVALID_HTTP_TOKEN' .

Không cần thiết phải sử dụng phương pháp này trước khi chuyển các tiêu đề cho một yêu cầu HTTP
hoặc phản hồi. Mô-đun HTTP sẽ tự động xác nhận các tiêu đề như vậy.
Ví dụ:

Ví dụ:

  

const

{validateHeaderName} =

request

(

'nút: http'

);

thử

{

validateHeaderName

(

''

); }

bắt

(err) { err

instanceof

TypeError

; lỗi

; err.

thông báo

; }

http.validateHeaderValue (tên, giá trị)

Đã thêm vào: v14.3.0

  • name & lt; string & gt;
  • giá trị & lt; bất kỳ & gt;

Thực hiện xác thực cấp thấp trên giá trị được cung cấp, được thực hiện khi
res.setHeader (tên, giá trị) được gọi.

Chuyển giá trị bất hợp pháp dưới dạng value sẽ dẫn đến việc tạo ra TypeError .

  • Lỗi giá trị không xác định được xác định bằng mã : 'ERR_HTTP_INVALID_HEADER_VALUE' .
  • Lỗi ký tự giá trị không hợp lệ được xác định bằng mã : 'ERR_INVALID_CHAR' .

Không cần thiết phải sử dụng phương pháp này trước khi chuyển các tiêu đề cho một yêu cầu HTTP
hoặc phản hồi. Mô-đun HTTP sẽ tự động xác thực các tiêu đề như vậy.

Ví dụ:

  

const

{validateHeaderValue} =

request

(

'nút: http'

);

thử

{

validateHeaderValue

(

'x-my-header'

,

undefined

); }

bắt

(err) { err

instanceof

TypeError

; lỗi

===

'ERR_HTTP_INVALID_HEADER_VALUE'

; err.

thông báo

; }

thử

{

validateHeaderValue

(

'x-my-header'

,

' oʊmɪɡə '

); }

bắt

(err) { err

instanceof

TypeError

; lỗi

===

'ERR_INVALID_CHAR'

; err.

thông báo

; }


Xem thêm những thông tin liên quan đến chủ đề http máy chủ lắng nghe nodejs

How to Set Up a Local HTTP Server (Node.js)

  • Tác giả: Charles Clayton
  • Ngày đăng: 2015-09-30
  • Đánh giá: 4 ⭐ ( 7666 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Step 1: Install Node.js here https://nodejs.org/en/

    Step 2: Install http-server using the following npm command in Node.js Command Prompt

    npm install http-server -g

    Step 3: Set up server using the following command in Node.js Command Prompt

    http-server "C:\\Users\\You\\Your Project Folder"

Node.js HTTP Module

  • Tác giả: www.codehub.com.vn
  • Đánh giá: 3 ⭐ ( 5920 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Node.js cung cấp sẵn một module có tên là HTTP, mô-đun này cho phép chúng ta sử dụng Node.js để truyền dữ liệu sử dụng giao thức Hyper Text Transfer Protocol (HTTP).

Máy chủ web NodeJS để kiểm tra các tập lệnh của bạn trên Ubuntu

  • Tác giả: ubunlog.com
  • Đánh giá: 4 ⭐ ( 3994 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong bài viết sau, chúng ta sẽ xem cách tạo máy chủ web NodeJs của riêng mình để kiểm tra các tập lệnh của riêng chúng ta cục bộ, sử dụng Ubuntu làm cơ sở.

[TUT]NodeJS - Tạo cổng Listener

  • Tác giả: dotnet.edu.vn
  • Đánh giá: 3 ⭐ ( 3205 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Ở đây tôi sẽ mô tả NodeJS. Mục đích của bài viết này là tạo ra server, listening thông qua số cổng và sau đó gửi ra trình duyệt.

Làm thế nào để "máy chủ" Node.js so sánh với máy chủ Nginx hoặc Apache?

  • Tác giả: qastack.vn
  • Đánh giá: 4 ⭐ ( 5052 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: [Tìm thấy giải pháp!] Đó là một máy chủ, vâng. Ứng dụng web node.js là một máy chủ web chính…

Node.js: Module http Node.js

  • Tác giả: v1study.com
  • Đánh giá: 5 ⭐ ( 8360 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Node.js có một mô-đun tích hợp được gọi là HTTP, cho phép Node.js truyền dữ liệu qua Giao thức truyền siêu văn bản (HTTP). Để tích hợp mô-đun HTTP thì ta

Node.js là gì và tại sao tôi nên học lập trình Node.js?

  • Tác giả: techmaster.vn
  • Đánh giá: 3 ⭐ ( 6611 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

Xem Thêm  Chương 2: Observer Pattern (Người quan sát) - head first java tiếng việt

By ads_php