I am designing a Web API which returns JSON as the content-type, the response body could contain characters like ', ", < and >, they are valid characters in JSON. So, my question is should I do HTML encode for my Web API response body or should I leave this task to HTML client who is consuming my Web API?

有帮助吗?

解决方案

No; you must not.

You must only escape data if and when you concatenate it into a structured format.

If you return JSON like { "text": "Content by X &amp; Y" }, anyone who reads that JSON will see the literal text &amp;.
It will only work correctly for extremely broken clients who concatenate it directly into their HTML without escaping.

In short:

Never escape text except when you're about to display it

其他提示

What platform are you using? For example, Node.js, you can use restify to handle that very well. You don't need to explicitly encode the data. Therefore, please find a restful framework or component to help you out.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top