两者之间有什么区别?
request.ContentType = "application/json; charset=utf-8";
分析:
第一种情况是告诉 Web 服务器您正在发布 JSON 数据,如下所示:
{"Name": "John Smith", "Age": 23}
“application/json”内容类型是预检请求之一。
现在,如果请求不是简单的请求,浏览器会自动在原始请求之前发送HTTP请求,然后通过OPTIONS方法检查发送原始请求是否安全。如果可以,则发送实际请求。您可以在此处查找详细信息。
application/json 是初学者友好的。URL编码数组可能是一场噩梦!
request.ContentType = "application/x-www-form-urlencoded";
分析:
第二种情况是告诉 Web 服务器,您将在 URL 中对参数进行编码:
Name=John+Smith&Age=23
1.application/x-www-form-urlencoded的名字来自哪里?
如果发送HTTP GET请求,则可以按如下方式使用查询参数:
http:/example.com/path/to/page?名称=雪貂&颜色=紫色
字段的内容编码为查询字符串。的名称来自前面的u川查询参数,但查询参数位于请求正文
不是url的位置。application,/x-wwwW-form-
urlencoded
整个表单数据作为长查询字符串发送。查询字符串包含由&字符分隔的名称-值对
例如,字段1=值1&字段2=值2
2.它可以是简单的情求,称为简单-不要触发印前检查
简单请求必须具有一些属性。您可以在此处查找详细信息。其中之一是,对于简单请求,
Content-Type标头只允许三个值:
1、application/x-www-form-urlencoded
2、多部分表单数据
3、文本/纯文本
对于大多数扁平参数树,尝试并测试了application/x-www-form-urlencoded。.
webRequest.ContentType ="application/json; charset=utf-8";
数据将采用json格式。
axios 和 superagent 是两个更流行的 npm HTTP 库,默认情况下使用 JSON 主体。
{
"id": 1,
"name": "Foo",
"price": 123,
"tags": [
"Bar",
"Eek"
],
"stock": {
"warehouse": 300,
"retail": 20
}
}
两者之间最大的区别之一是,JSON编码帖子通常会保留发送的值的数据类型(只要它们是有效的JSON数据类型),而apprament/x-www-form-urlencoded通常会将所有属性转换为字符串。
例如,在 JSON 编码的帖子中:
{"Name": "John Smith", "Age": 23}
服务器很可能会将 Age 属性解析为整数 23。
而在
Name=John+Smith&Age=23
服务器很可能会将 Age 解析为字符串“23”。
当然,如果您使用其他图层来解析这些值并将其转换为适当的类型,这可能不是问题。
================================
您可以通过打开f12控制台看到这一点:
页眉
content-type: multipart/form-data; boundary=--------------------------590299136414163472038474
身体
key1=value1key2=value2
页眉
Content-Type: application/x-www-form-urlencoded
身体
key1=value1&key2=value2
页眉
Content-Type: text/plain
身体
This is some text.
页眉
Content-Type: application/json
身体
{"key1":"value1","key2":"value2"}