Table of Contents
0x01.About
0x02.Content-Type
0x03.application/x-www-form-urlencoded
0x04.multipart/form-data
0x05.text/xml
0x06.application/json
Home Web Front-end JS Tutorial How to understand Content-Type in HTTP

How to understand Content-Type in HTTP

Sep 14, 2017 am 11:03 AM
http understand

0x01.About

View Restful API header plug-in: Chrome plug-in REST Console, and tool for sending Restful API: Chrome plug-in POST Man

In the HTTP 1.1 specification, HTTP request methods include OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT

Usually we only use GET and POST, but for Restful According to the API specification, the PUT method should be used to request resources, and the DELETE method should be used to delete resources.

For example, send a DELETE packet:

http://example.com/my/resource?id=12345
Copy after login

Then the information can be obtained through the id. This packet only has a header and does not have a body. Let’s discuss some of the following: The body transmission format of the package.


0x02.Content-Type

Content-Type is used to specify the content type, which generally refers to the Content-Type that exists in the web page. The Content-Type attribute specifies the HTTP request and response. Content type. If ContentType is not specified, it defaults to text/html.

There is a configuration file mime.types in nginx, which is mainly the file format indicating Content-Type.

The following are several common Content-Types:

1.text/html
2.text/plain
3.text/css
4.text/ javascript
5.application/x-www-form-urlencoded
6.multipart/form-data
7.application/json
8.application/xml
...

The first few are easy to understand. They are all file types of html, css, and javascript. The last four are POST delivery methods.


0x03.application/x-www-form-urlencoded

application/x-www-form-urlencoded is a commonly used form delivery method, ordinary Form submission, or js package delivery, is done in this way by default.

For example, if a simple form is:

<form enctype="application/x-www-form-urlencoded" action="http://homeway.me/post.php" method="POST">
    <input type="text" name="name" value="homeway">
    <input type="text" name="key" value="nokey">
    <input type="submit" value="submit">
</form>
Copy after login

, then the raw header received by the server will be similar to:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8Accept-Encoding:gzip, deflateAccept-Language:zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4,gl;q=0.2,de;q=0.2Cache-Control:no-cacheConnection:keep-aliveContent-Length:17Content-Type:application/x-www-form-urlencoded
Copy after login

Then the raw body received by the server will be, name=homeway&key=nokey. In PHP, data in array form can be obtained through $_POST.


0x04.multipart/form-data

multipart/form-data用在发送文件的POST包。

这里假设我用python的request发送一个文件给服务器:

data = {    
"key1": "123",    
"key2": "456",
}
files = {&#39;file&#39;: open(&#39;index.py&#39;, &#39;rb&#39;)}
res = requests.post(url="http://localhost/upload", method="POST", data=data, files=files)
print res
Copy after login

通过工具,可以看到我发送的数据内容如下:

POST http://www.homeway.me HTTP/1.1Content-Type:multipart/form-data; boundary=------WebKitFormBoundaryOGkWPJsSaJCPWjZP
------WebKitFormBoundaryOGkWPJsSaJCPWjZP
Content-Disposition: form-data; name="key2"456------WebKitFormBoundaryOGkWPJsSaJCPWjZP
Content-Disposition: form-data; name="key1"123------WebKitFormBoundaryOGkWPJsSaJCPWjZP
Content-Disposition: form-data; name="file"; filename="index.py"
Copy after login

这里Content-Type告诉我们,发包是以multipart/form-data格式来传输,另外,还有boundary用于分割数据。

当文件太长,HTTP无法在一个包之内发送完毕,就需要分割数据,分割成一个一个chunk发送给服务端,

那么--用于区分数据快,而后面的数据633e61ebf351484f9124d63ce76d8469就是标示区分包作用。


0x05.text/xml

微信用的是这种数据格式发送请求的。

POST http://www.homeway.me HTTP/1.1 
Content-Type: text/xml<?xml version="1.0"?><resource>
    <id>123</id>
    <params>
        <name>
            <value>homeway</value>
        </name>
        <age>
            <value>22</value>
        </age>
    </params></resource>
Copy after login

php中$_POST只能读取application/x-www-form-urlencoded数据,$_FILES只能读取multipart/form-data类型数据,

那么,要读取text/xml格式的数据,可以用:

$file = fopen(&#39;php://input&#39;, &#39;rb&#39;);
$data = fread($file, length);
fclose($file);
Copy after login

或者

$data = file_get_contents('php://input');


0x06.application/json

Send data to the server in json format. At first, I tried to send the application/json format to the server through curl. package,

However the data I received is as follows:

------------------------- -e1e1406176ee348a Content-Disposition: form-data; name="nid" 2 --------------------------e1e1406176ee348a Content-Disposition: form-data ; name="uuid" cf9dc994-a4e7-3ad6-bc54-41965b2a0dd7 --------------------------e1e1406176ee348a Content-Disposition: form-data; name="access_token" 956731586df41229dbfec08dd5d54eedb98d73d2 --------- ------------------e1e1406176ee348a--

After thinking about it, I realized that there is no so-called json in HTTP communication, but string conversion It just becomes json, that is, application/json can be understood as text/plain, a normal string.

The reason why there are so many messy things-------It should be that the PHP array is transferred in, and there is a conversion problem

The above is the detailed content of How to understand Content-Type in HTTP. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

What does http status code 520 mean? What does http status code 520 mean? Oct 13, 2023 pm 03:11 PM

HTTP status code 520 means that the server encountered an unknown error while processing the request and cannot provide more specific information. Used to indicate that an unknown error occurred when the server was processing the request, which may be caused by server configuration problems, network problems, or other unknown reasons. This is usually caused by server configuration issues, network issues, server overload, or coding errors. If you encounter a status code 520 error, it is best to contact the website administrator or technical support team for more information and assistance.

Understand common application scenarios of web page redirection and understand the HTTP 301 status code Understand common application scenarios of web page redirection and understand the HTTP 301 status code Feb 18, 2024 pm 08:41 PM

Understand the meaning of HTTP 301 status code: common application scenarios of web page redirection. With the rapid development of the Internet, people's requirements for web page interaction are becoming higher and higher. In the field of web design, web page redirection is a common and important technology, implemented through the HTTP 301 status code. This article will explore the meaning of HTTP 301 status code and common application scenarios in web page redirection. HTTP301 status code refers to permanent redirect (PermanentRedirect). When the server receives the client's

HTTP 200 OK: Understand the meaning and purpose of a successful response HTTP 200 OK: Understand the meaning and purpose of a successful response Dec 26, 2023 am 10:25 AM

HTTP Status Code 200: Explore the Meaning and Purpose of Successful Responses HTTP status codes are numeric codes used to indicate the status of a server's response. Among them, status code 200 indicates that the request has been successfully processed by the server. This article will explore the specific meaning and use of HTTP status code 200. First, let us understand the classification of HTTP status codes. Status codes are divided into five categories, namely 1xx, 2xx, 3xx, 4xx and 5xx. Among them, 2xx indicates a successful response. And 200 is the most common status code in 2xx

Common network communication and security problems and solutions in C# Common network communication and security problems and solutions in C# Oct 09, 2023 pm 09:21 PM

Common network communication and security problems and solutions in C# In today's Internet era, network communication has become an indispensable part of software development. In C#, we usually encounter some network communication problems, such as data transmission security, network connection stability, etc. This article will discuss in detail common network communication and security issues in C# and provide corresponding solutions and code examples. 1. Network communication problems Network connection interruption: During the network communication process, the network connection may be interrupted, which may cause

http request 415 error solution http request 415 error solution Nov 14, 2023 am 10:49 AM

Solution: 1. Check the Content-Type in the request header; 2. Check the data format in the request body; 3. Use the appropriate encoding format; 4. Use the appropriate request method; 5. Check the server-side support.

How to implement HTTP streaming using C++? How to implement HTTP streaming using C++? May 31, 2024 am 11:06 AM

How to implement HTTP streaming in C++? Create an SSL stream socket using Boost.Asio and the asiohttps client library. Connect to the server and send an HTTP request. Receive HTTP response headers and print them. Receives the HTTP response body and prints it.

What status code is returned for an HTTP request timeout? What status code is returned for an HTTP request timeout? Feb 18, 2024 pm 01:58 PM

The HTTP request times out, and the server often returns the 504GatewayTimeout status code. This status code indicates that when the server executes a request, it still fails to obtain the resources required for the request or complete the processing of the request after a period of time. It is a status code of the 5xx series, which indicates that the server has encountered a temporary problem or overload, resulting in the inability to correctly handle the client's request. In the HTTP protocol, various status codes have specific meanings and uses, and the 504 status code is used to indicate request timeout issues. in customer

How to solve HTTP 503 error How to solve HTTP 503 error Mar 12, 2024 pm 03:25 PM

Solution: 1. Retry: You can wait for a period of time and try again, or refresh the page; 2. Check the server load: Check the server's CPU, memory and disk usage. If the capacity limit is exceeded, you can try to optimize the server configuration or increase the capacity. Server resources; 3. Check server maintenance and upgrades: You can only wait until the server returns to normal; 4. Check network connection: Make sure the network connection is stable, check whether the network device, firewall or proxy settings are correct; 5. Ensure cache or CDN configuration Correct; 6. Contact the server administrator, etc.

See all articles