之间有什么区别
request.ContentType =“ application / json; charset = utf-8”;
和
webRequest.ContentType =“ application / x-www-form-urlencoded”;
之间有什么区别
request.ContentType =“ application / json; charset = utf-8”;
和
webRequest.ContentType =“ application / x-www-form-urlencoded”;
Answers:
第一种情况是告诉Web服务器您正在发布JSON数据,如下所示:
{ Name : 'John Smith', Age: 23}
第二个选项是告诉Web服务器您将对URL中的参数进行编码,如下所示:
Name=John+Smith&Age=23
application/x-www-form-urlencoded
会混淆服务器(在我的情况下,Elixir使用Poison)并导致对象的某些不正确解析(以某种方式转换了嵌套数组)对象到地图,而不是列表)。application/json
在这种情况下,使用应该是正确的选择。
webRequest.ContentType =“ application / x-www-form-urlencoded”;
哪里应用程序/ x-WWW的形式了urlencoded的名字从何而来?
如果发送HTTP GET请求,则可以使用查询参数,如下所示:
http://example.com/path/to/page
?名称=雪貂和颜色=紫色
字段的内容被编码为查询字符串。该application/x-www-form-
urlencoded
的名字来自于以前的网址查询参数,但查询参数是在请求的主体中,而不是网址。
整个表格数据以长查询字符串的形式发送。查询字符串包含以&字符分隔的名称-值对
例如,field1 = value1&field2 = value2
它可以是一个简单的请求,称为简单- 不要触发飞行前检查
简单请求必须具有一些属性。您可以在这里查看更多信息。其中之一是,对于简单请求,Content-Type标头仅允许使用三个值
3.对于大多数平面参数树,尝试并测试了application / x-www-form-urlencoded。
request.ContentType =“ application / json; charset = utf-8”;
默认情况下,axios和superagent是两个较流行的npm HTTP库,它们与JSON主体一起使用。
{ "id": 1, "name": "Foo", "price": 123, "tags": [ "Bar", "Eek" ], "stock": { "warehouse": 300, "retail": 20 } }
现在,如果请求不是简单请求,则浏览器会通过OPTIONS方法自动在原始请求之前发送HTTP请求,以检查发送原始请求是否安全。如果可以,则发送实际请求。您可以在这里查看更多信息。
x-www-form-urlencoded
用于AJAX请求(如表决等)。发回的响应是JSON
。我认为最好有一个对称的请求/响应对,即两个JSON。