(与服务器无关的问题,但我感兴趣的是它是否会因服务器软件的不同而有所不同。)
最近有人告诉我,我们需要将后端请求的内容类型从 更改为。JSON.stringify(object)
我text/plain
完全赞成这样做,因为识别数据的技术正确性。object
application/json
然而,其理由是,这将通过减轻对JSON.parse
接收字符串的需求来提供性能优势。
我的理解是,无论你发送什么类型的内容,它仍然是细绳被服务器接收。在 0 和 1 的数据传输世界中,JSON 对象和字符串没有区别。我相信当服务器收到 Content-Type application/json 时,它只是在JSON.parse
将数据传递给你的应用程序之前调用 - 这意味着没有表现使用其中一个比使用另一个更有好处,因为它们做的是同样的事情。
我的解释正确吗,或者服务器是否能够以某种方式比另一种更快地处理一种内容类型?
答案1
相反,我看到了使用的理由text/plain
!
如果您正在使用 CORS(跨源请求)并且使用,application/json
那么该请求将不再被视为“简单请求”,然后浏览器将发出飞行前请求(使用 http OPTIONS)来检查 CORS 是否被允许。
使用text/plain
将启用 CORS 而无需预检请求,从而使响应返回更快。
答案2
对于编写良好的应用程序来说,性能方面应该没有问题,尤其是考虑到 JSON 的自动反序列化应该与手动反序列化的默认行为完全相同。不过,正确性方面确实有影响(JSON 不是纯文本,因此您不应将其用作text/plain
内容类型)。
话虽如此,但我想到了一个案例可能问题。如果你有一个防火墙,它进行深度数据包检查,并尝试对内容进行某种形式的防病毒扫描,而防火墙和 AV 软件都盲目信任内容类型,那么可能发送数据 s 会更有效率text/plain
。然而,满足所有这些条件的可能性基本上为零,所以你不应该为此编写代码。