You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在API调用中渲染响应中的HTML标签?

解决API响应中HTML标签以纯文本显示的问题

你的问题核心是API返回的HTML标签被转义成了HTML实体(比如&lt;代替<、&quot;代替"),导致渲染时无法解析为真实HTML元素。以下是不同场景的解决方法:

原生JavaScript实现

先解码API返回的实体字符串,再插入到DOM中:

// 假设apiContent是从接口获取的内容(已转译并移除外链)
const apiContent = '比特币是一种让移动支付变得便捷的网络货币,交易手续费极低,能保护你的身份,且无需中央机构和银行支持,随时随地可用。比特币的总发行量被设定为2100万枚,因此属于通缩型货币。比特币采用**SHA-256**哈希算法,平均交易确认时间为10分钟。如今矿工使用专门用于比特币挖矿的ASIC芯片进行挖矿,哈希率已飙升至P级别。作为首个成功的在线加密货币,比特币启发了其他替代货币,如**莱特币**、**点点币**、**质数币**';
// 解码HTML实体(针对API返回的带实体字符串)
const decoder = document.createElement('div');
decoder.innerHTML = apiContent;
const decodedHtml = decoder.innerHTML;
// 将解码后的内容插入目标元素
document.getElementById('target-container').innerHTML = decodedHtml;

React框架实现

React默认会转义HTML,需使用dangerouslySetInnerHTML渲染原始内容,同时先完成实体解码:

function CryptoInfo() {
  const apiContent = '比特币是一种让移动支付变得便捷的网络货币,交易手续费极低,能保护你的身份,且无需中央机构和银行支持,随时随地可用。比特币的总发行量被设定为2100万枚,因此属于通缩型货币。比特币采用**SHA-256**哈希算法,平均交易确认时间为10分钟。如今矿工使用专门用于比特币挖矿的ASIC芯片进行挖矿,哈希率已飙升至P级别。作为首个成功的在线加密货币,比特币启发了其他替代货币,如**莱特币**、**点点币**、**质数币**';
  
  // 解码HTML实体
  const decoder = document.createElement('div');
  decoder.innerHTML = apiContent;
  const decodedHtml = decoder.innerHTML;

  return <div dangerouslySetInnerHTML={{ __html: decodedHtml }} />;
}

Vue框架实现

Vue的v-html指令会自动处理实体解码并渲染HTML:

<template>
  <div v-html="apiContent"></div>
</template>

<script>
export default {
  data() {
    return {
      apiContent: '比特币是一种让移动支付变得便捷的网络货币,交易手续费极低,能保护你的身份,且无需中央机构和银行支持,随时随地可用。比特币的总发行量被设定为2100万枚,因此属于通缩型货币。比特币采用**SHA-256**哈希算法,平均交易确认时间为10分钟。如今矿工使用专门用于比特币挖矿的ASIC芯片进行挖矿,哈希率已飙升至P级别。作为首个成功的在线加密货币,比特币启发了其他替代货币,如**莱特币**、**点点币**、**质数币**'
    };
  }
};
</script>

注意事项

如果API返回的内容来自不可信来源,务必使用DOMPurify这类库过滤危险HTML标签和脚本,避免XSS攻击。

内容的提问来源于stack exchange,提问作者Evan Feliza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 04:00:29