angular - 在 url 中发送包含 html 的字符串而不删除特殊字符
问题描述
我正在尝试发送一条消息,该消息是一个包含图标的字符串,该图标是一个 html 元素,但是当我在我的网络服务 url 中传递它时,它会删除所有特殊字符。有没有办法在不删除这些特殊字符的情况下将其保留为字符串?
我要传递的字符串是
var body= "hello <img src="/assets/smile.png">";
网络服务网址是:
return this.http.get(' http://localhost:44435/Projet/AddMsessage?body=' +body+ '&idSender=' + idSender + '&idDiscussion=' + idDiscussion);
但是当我执行网络服务时,它变成了这样的问题:
http://localhost:44435/Projet/AddMsessage?body=halo%20%3Cimg%20src%3D%22%2Fassets%2Fsmile.png%22%3E%20&idSender=1&idDiscussion=1
它删除 < , / , " ,> 字符
解决方案
您应该使用HttpClient#get
's 第二个参数来传递 URL 参数。有关更多信息,请参阅官方文档。
您的代码变为:
return this.http.get('http://localhost:44435/Projet/AddMsessage', {
params: new HttpParams()
.set('body', body)
.set('idSender', idSender)
.set('idDiscussion', idDiscussion)
});
如果你不这样做,如果你的参数值包含诸如?
or之类的字符&
,它们会搞砸你的 URL,因为 Angular 无法知道每个参数“停止”的位置。
但是,对特殊字符进行 url 编码是完全正常的。<
变成%3C
等等。
推荐阅读
- electron - 如何在主/渲染器进程之间共享数据
- wpf - 调整窗口大小时将 TextBlocks 定位在缩放的线端点
- c++ - 如何将文件逐行读入向量然后打印向量
- pyqt - QStandardItemModel 的 setData、setItemData 和 setIem 方法有什么区别?
- spring - 如何将选定的下拉值传递给 Thymeleaf 中的控制器?
- python - 如何通过计算数据框中共同出现的数量来创建邻接矩阵?
- python - 具有来自同一脚本的具有不同端口号的多个套接字的 Python 程序?
- python-3.x - 自定义损失缺少梯度操作
- python - 使用 Keras 在 Tensorflow 2.0 中处理负采样的最佳方法
- sqlite - SQLITE 选择唯一行