首页 > 解决方案 > 在 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

它删除 < , / , " ,> 字符

标签: angular

解决方案


您应该使用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等等。


推荐阅读