---
# System prepended metadata

title: '#19.0 HTTP method 共同研究會 - Method Overview'
tags: [Meetups]

---

---
title: "#19.0 HTTP method 共同研究會 - Method Overview"
tags: Meetups
date: 2022-03-24
---

See: https://datatracker.ietf.org/doc/html/rfc7231

```text
4.1.  Overview

   The request method token is the primary source of request semantics; it indicates the purpose for which the client has made this request and what is expected by the client as a successful result.
```

Method 可以指出 client 的目的，包括 client 可以拿到的結果，這都是可以從 method 猜的出來。

```
   The request method's semantics might be further specialized by the semantics of some header fields when present in a request (Section 5) if those additional semantics do not conflict with the method.  For example, a client can send conditional request header fields (Section 5.2) to make the requested action conditional on the current state of the target resource ([RFC7232]).
```

可以透 Header 語法，

```
   HTTP was originally designed to be usable as an interface to distributed object systems.  The request method was envisioned as applying semantics to a target resource in much the same way as invoking a defined method on an identified object would apply semantics.  The method token is case-sensitive because it might be used as a gateway to object-based systems with case-sensitive method names.
```

```
   Unlike distributed objects, the standardized request methods in HTTP are not resource-specific, since uniform interfaces provide for better visibility and reuse in network-based systems [REST].  Once defined, a standardized method ought to have the same semantics when applied to any resource, though each resource determines for itself whether those semantics are implemented or allowed.

   This specification defines a number of standardized methods that are commonly used in HTTP, as outlined by the following table.  By convention, standardized methods are defined in all-uppercase US-ASCII letters.
```

```
   +---------+-------------------------------------------------+-------+
   | Method  | Description                                     | Sec.  |
   +---------+-------------------------------------------------+-------+
   | GET     | Transfer a current representation of the target | 4.3.1 |
   |         | resource.                                       |       |
   | HEAD    | Same as GET, but only transfer the status line  | 4.3.2 |
   |         | and header section.                             |       |
   | POST    | Perform resource-specific processing on the     | 4.3.3 |
   |         | request payload.                                |       |
   | PUT     | Replace all current representations of the      | 4.3.4 |
   |         | target resource with the request payload.       |       |
   | DELETE  | Remove all current representations of the       | 4.3.5 |
   |         | target resource.                                |       |
   | CONNECT | Establish a tunnel to the server identified by  | 4.3.6 |
   |         | the target resource.                            |       |
   | OPTIONS | Describe the communication options for the      | 4.3.7 |
   |         | target resource.                                |       |
   | TRACE   | Perform a message loop-back test along the path | 4.3.8 |
   |         | to the target resource.                         |       |
   +---------+-------------------------------------------------+-------+
```

https://www.iana.org/assignments/http-methods/http-methods.xhtml

### TRACE

描述: 目標WEB伺服器啟用了TRACE方法。
TRACE方法是HTTP（超文字傳輸）協議定義的一種協議除錯方法，該方法使得伺服器原樣返回任何客戶端請求的內容（可能會附加路由中間的代理伺服器的資訊），由於該方法原樣返回客戶端提交的任意資料，因此，可用來進行跨站指令碼（XSS）攻擊，這種攻擊方式又稱為跨站跟蹤攻擊（XST）。

建議: 如非必要，請禁用TRACE方法。
黑客已使用 TRACE 方法来实现对 Web 服务器的安全性攻击。

看來沒什麼公開網站會開這方法給人try
