首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从wkhtmltopdf发布到expressjs时,加号被空格替换

是因为在URL传递参数时,加号会被解析为空格。这是由于URL编码规范的影响。

URL编码是一种将URL中的特殊字符转换为特定编码格式的过程,以确保URL的正确传递和解析。在URL编码中,空格被转换为加号(+),而加号则被转换为%2B。

当使用wkhtmltopdf生成PDF时,可能会将URL作为参数传递给该工具。在URL中,如果存在空格,应该使用%20进行编码。然而,有些情况下,URL中的空格被错误地编码为加号。这可能是由于URL传递过程中的某些中间件或处理程序对URL进行了不正确的编码处理。

在expressjs中,URL参数的解析是由中间件处理的。默认情况下,expressjs使用body-parser中间件来解析URL参数。在body-parser中,URL参数会被解析为键值对的形式,并且加号会被解析为空格。

为了解决这个问题,可以使用encodeURIComponent()函数对URL参数进行编码,确保加号被正确地转换为%2B。在expressjs中,可以使用encodeURIComponent()函数对URL参数进行编码,然后再传递给wkhtmltopdf。

示例代码如下:

代码语言:txt
复制
const express = require('express');
const app = express();

app.get('/generate-pdf', (req, res) => {
  const url = req.query.url;
  const encodedUrl = encodeURIComponent(url);
  
  // 使用encodedUrl作为参数传递给wkhtmltopdf
  // ...
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

这样,加号就不会被空格替换了。

关于腾讯云相关产品,推荐使用腾讯云的云服务器(CVM)来部署expressjs应用程序。云服务器是腾讯云提供的弹性计算服务,可以快速创建和管理虚拟机实例,提供高性能、可靠稳定的计算能力。

腾讯云云服务器产品介绍链接地址:https://cloud.tencent.com/product/cvm

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Python 绝招:解锁小红书信息流的无限潜力!

与此同时,积极获取信息差也是一种重要的能力 最近在小红书闲逛,发现有这么一类号主,他们专门整理城市每天的信息(包含:新闻、房产、招聘、演唱会、美食羊毛等)进行发布 他们以此获取同城流量,然后转化私域流量进行变现...本篇文章将介绍如何利用 Python 一键生成这类信息流数据 1、Markdown 文件 发布小红书的素材都是图片,利用 Python 生成图片有多种方式 比如:Pillow、OpenCV 直接生成一张图片..."## 【新闻】\n\n") # 关键内容标为红色,加粗,比如:金额 file.write("92号汽油:7.60元元\n\n") # 空格及换行...然后,读取 Markdown 文件,转为 HTML,并写入一个临时的 HTML 文件中 PS:由于包含中文,这里写入 HTML 指定字符编码为 utf-8 import markdown import...,不然运行会报 No wkhtmltopdf executable found 的异常 以 windows 为例,只需要下载对应的可执行文件进行安装,配置环境变量即可 https://github.com

46530

http请求中加号替换空格?源码背后的秘密

为了周更不断,想着去把之前发布在其他平台的一篇原创文章搬过来就行。结果发现,当年我写的那篇文章,离真相还差着十万八千里。 而去搜索这个问题,我的文章是检索结果的第一个。...原文《http请求参数中加号替换空格及请求参数URLDeCode的记录》链接如下: https://www.jianshu.com/p/1a30b585c39e 所以为了避免继续误导读者,就算周末...整个方法的解读如下: 所以我的入参是jay+love,但是后台接收到的是jay love,加号空格了。为什么呢? 原因很简单,在源码中有一段代码把'+'替换成了空格,刻意为之。...回到前面的这个地方: 这里解码的时候为什么把'+'转化为空格呢?因为"历史原因",如果URLs中出现了空格,需要用'+'替换,所以这里解码的时候把'+'转化回了空格。...全部替换为‍'%2B',如下: 方案二:修改服务器端,将空格替换为'+',这种方式只适用于参数中'+'没有空格的情况。

1.8K31

http请求中加号替换空格?源码背后的秘密

为了周更不断,想着去把之前发布在其他平台的一篇原创文章搬过来就行。结果发现,当年我写的那篇文章,离真相还差着十万八千里。 而去搜索这个问题,我的文章是检索结果的第一个。 ?...正如上面的现象所示:我的入参是jay+love,但是后台接收到的是jay love,加号空格了。为什么呢? 本文分析的Tomcat源码版本为:9.0.29. ?...可以看到,在源码里面有一段代码,是把'+'替换了为了空格,是特意做了这样的特殊处理。 整个方法的解读如下: ? 所以我的入参是jay+love,但是后台接收到的是jay love,加号空格了。...这里解码的时候为什么把'+'转化为空格呢?因为"历史原因",如果URLs中出现了空格,需要用'+'替换,所以这里解码的时候把'+'转化回了空格。先有了编码的操作,所以才会有解码的操作。...方案二:修改服务器端,将空格替换为'+',这种方式只适用于参数中'+'没有空格的情况。如下: ?

3.2K30

Sqlmap工具使用总结

大于2,会检测cookie注入;大于3,会检测头注入 --risk:执行测试的风险(0-3,默认为1)。risk越高,检测越慢越安全 --technique:指定注入类型。...32 percentage 每个字符前添加% 33 plus2concat 将加号替换为concat函数 34 plus2fnconcat 将加号替换为ODBC函数{fn CONCAT()} 35 randomcase...空格替换为/**/ 40 space2dash 空格替换为–加随机字符 41 space2hash 空格替换为#加随机字符 42 space2morecomment 空格替换为/_/ 43 space2morehash...空格替换为#加随机字符及换行符 44 space2mssqlblank 空格替换为其他空符号 45 space2mssqlhash 空格替换为%23%0A 46 space2mysqlblank 空格替换为其他空白符号...47 space2mysqldash 空格替换为–%0A 48 space2plus 空格替换加号 49 space2randomblank 空格替换为备选字符集中的随机字符 50 symboliclogical

1.2K10

Django 结合Vue实现前端页面导出为PDF

最终解决方案: 后台编写好html模板(包含用到的样式、样式链接等),收到请求读取该模板文件为html文本。...数据库读取前端用到的表格数据,然后替换至模板中对应位置的模板变量;通过echars api先由 js把echarts图表转为base64编码数据,然后随其它导出文件必要参数信息发送到后台,后台接收后转...base64编码为图片,然后替换模板中对应的模板变量,这样以后,通过pdfkit类库把模板html文本导出为pdf。...所在路径(例中为D:\Program Files\wkhtmltopdf\bin\wkhtmlpdf.exe),添加到系统环境变量path中(实践发现,即便是配置了环境变量,运行时也会报错:提示:No...{%s}' % key, '%s/sprint_test_report/%s' % (current_dir, file_name_dict[key])) # 注意,这里,迭代测试报告模板中的变量名称设置为和

2.1K10

如何处理Shell脚本中的特殊字符

概述 有时,当我们编写 shell 脚本,我们必须处理特殊字符,如空格、符号和其他非 ASCII 字符。这些字符可能无法直接由 shell 脚本和其他工具处理。...用双引号包裹替换 在 shell 中,当我们为mv之类的命令指定文件名,shell 将文件名之间的空格视为分隔符。因此,每个文件名将对应于磁盘上的一个单独文件或目录。...阅读无选项 read命令变量、文件或标准输入中读取输入。当我们在不带任何选项的shell脚本中使用read命令,它会对空格、反斜杠、续行等特殊字符进行一些操作。...反斜杠也保留。 4.3. IFS环境变量 上面输出中缺少的一件事是前导双空格。读取命令会占用前导空格,并且没有合适的选项供我们指定。 因此,我们需要取消(清空)IFS(内部字段分隔符)环境变量。...有时,shellcheck会检测到我们甚至可能没有注意的非常细微的错误。

6.9K30

给了一个站点测试,发现有狗,为什么没有网站截图,因为害怕

可能存在sql注入,寻找注入点,单引号闭合报错,存在注入 and 1=1 测试,WATS-WAF拦截 此网站存在WAF,所以我们需要绕过他的过滤规则。...| 使用脚本后 | | :———————-: | :————: | :——————: | :—————————-: | :—————————-: | | space2plus.py | ALL | 用加号替换空格...它可以是独立设备,也可以集成其他网络组件中 waf有很多版本:360 云锁 安全狗 等等 该如何判断waf种类呢,我们可以通过他的阻止相应页面,响应头,等特性来判断其为哪一种waf 例如:WTS-waf...base64编码 使用脚本前:1' AND SLEEP(5)# 使用脚本后:MScgQU5EIFNMRUVQKDUpIw== space2plus.py 适用数据库:ALL 作用:用加号替换空格...使用脚本前:1 AND '1'='1 使用脚本后:1 AND %EF%BC%871%EF%BC%87=%EF%BC%871 space2randomblank.py 适用数据库:ALL 作用:将空格替换为其他有效字符

92540

见鬼了:数据库中有“A+A”,但页面搜不到???

空格。 也就是在前端页面输入的+,到了服务器,变成了空格!!! 对比使用A+A的搜索结果,发现命中的都是带有“A A”的品牌信息: 为什么“+”变成空格了呢?...那么,问题搞清楚了: 根本原因在于,在URL中,加号(+)视为一个特殊字符,通常用于表示空格。 因此,Web服务器将URL上的“A+A”理解为“A A”。...复盘 回顾整个问题的发生,我们意识在设计API,没有充分考虑特殊字符的处理。尽管加号在URL中有特定的含义,但在我们的应用场景中,它应该被视为普通字符进行处理。...这一疏忽导致了用户在搜索包含加号的内容遇到了困难。 解决方案 方案1、使用body来传递查询参数 这个方案的优缺点: 缺点:前后端都需要进行改动。都要重新开发、测试、发布。 优点:彻底。...缺点:用户输入A+无法搜到期望的结果。品牌名称中出现其它URL保留字,仍然会搜到期望的结果。 临时过渡方案,不推荐作为长期方案。

9510

【Java】22 网络连接

其实在第一个地址栏中,中文也是编码的,只是浏览器展示将其解码了,复制出来依然是编码状态(wd=%E6%88%91%E7%88%B1%20Java)。...编码规范   字母数字字符 a z、A Z 和 0 9 保持不变。特殊字符 .、-、* 和 _ 保持不变。空格字符 " " 转换为一个加号 +。...空格问题   URL 中关于空格的编码与空格所在位置相关:空格编码成加号 + 的情况只会在查询字符串部分出现,而编码成 %20 则可以出现在路径和查询字符串中。   ...造成这种问题的原因在于:W3C 标准规定,当 Content-Type 为 application/x-www-form-urlencoded ,URL 中查询参数名和参数值中空格要用加号 + 替代,...而在 RFC 2396 中规定, URI 里的保留字符都需转义成 %HH 格式(Section 3.4 Query Component),因此空格会被编码成 %20,加号 + 本身也作为保留字而编成

1.3K30

Python学习 (1)

将整个模块(somemodule)导入,格式为:import somemodule 某个模块中导入某个函数,格式为:from somemodule import somefunction 某个模块中导入多个函数...# 输出字符串第一个字符 R >>> print (str[2:5]) # 输出第三个开始第五个的字符 noo >>> print (str[2:]) # (:) 输出第三个开始的后的所有字符...%d 整数 %f 浮点数 %s 字符串 %x 十六进制整数 ---- 当字符串格式,使用位置参数和关键词参数,须确保位置参数在关键词参数之前。...格式化操作符辅助指令: 符号 功能 * 定义宽度或者小数点精度 - 用做左对齐 + 在正数前面显示加号( + ) 在正数前面显示空格 # 在八进制数前面显示零('0')...和字符串一样,列表同样可以==索引==和==截取==,列表截取后返回一个包含所需元素的新列表。

59030

记一次 SQL 注入简单 bypass

使用 and 1=1、and 1=2 ,发现过滤了空格,用/**/代替 ? ? 0x01 简单看一下 中间件是 IIS,存在 len 函数,确定为 SQLServer ?...感觉像过滤了char之类的函数,char 移到显示位,测一下 发现有加号的时候出错,没有的时候就没问题,可能是处理加号了 ? ? 移到显示位测了下,确实处理加号了,替换为空了 ?...0x04 tamper 去网上找了能替换加号的,没有找到相关信息,后来想着 sqlmap 的 tamper 会不会有,结果还真有 ?...Emmmmm,可以获取数据库表,但是获取表的列名依然不返回数据 ? 0x05 再次探测过滤 同样 -v 3 看 payload,然后测试 ? 有语法错误,估计又是那个替换为空了,慢慢试。。。...看了下语句,涉及的也就是 union、select、concat、cast、from、syscolumns、sysobjects、where、and 这些个可能过滤的,union、select 没问题

1.1K10

sqlmap自带的tamper你了解多少?

(比如我),今天就整理总结一下 tamper 的用法以及 tamper 的编写 PS:工具既然叫做工具,就是用来辅助上单的,呸辅助我们完成某些任务的,仅仅适用于当进行某些重复的繁琐工作或是偶尔懒癌发作,...,并且将等号替换为 like ,用于过滤了空格和等号的情况 union select * from users where id = 1 to union%09select * from%09users...,用于加号过滤的情况 select char(13)+char(114)+char(115) from user to select concat(char(113),char(114),char(115...: blanks = ("%09", "%0A", "%0C", "%0D") 用这些随机空白符替换 payload 中的空格 union select 1,2--+ to union%09select...i)\bOR\b", "%7C%7C", payload)) 用 && 替换 and ,用 || 替换 or ,用于这些关键字过滤的情况 1 and 1=1 to 1 %26%26 1=1 1 or

1.1K00

Excel催化剂输出内容汇总PDF及Word版本分享

这一系列的文章,虽然已经发布出去,但对于现在移动时代的碎片化阅读来说,非常难以系统地学习,故很早就想将资料整理成集,供有需要的人更方便学习和查阅。 花费了颇为挫折的过程,终于将这个目标实现了。...一路的技术实现挫折之旅 用selenium下载网页下来,通过wkhtmltopdf工具转成的pdf,仍然是图片显示不出来,没有图片的方案绝对不是一个最终的方案。...而下载文章从简书平台上来到微信公众号的文章,同样下载后,一样是图片问题不能显示,微信公众号网页下载后,图片文件省略了后缀名,没法在html页面上重新渲染出来。...就这样,选择比努力重要,方向对了,就没再受中文问题困扰,用wkhtmltopdf引擎少量测试的确成功了。...markdown的文本格式文件,比起其他文件来说,处理起来非常流畅,使用了几轮正则替换功能,将之前文章写得不规范和有结尾冗余的自我介绍内容一并清除掉,留下非常清爽的内容。

81030

sqlmap的tamper详解

(比如我),今天就整理总结一下 tamper 的用法以及 tamper 的编写 PS:工具既然叫做工具,就是用来辅助上单的,呸辅助我们完成某些任务的,仅仅适用于当进行某些重复的繁琐工作或是偶尔懒癌发作,...,并且将等号替换为 like ,用于过滤了空格和等号的情况 union select from users where id = 1 to union%09select from%09users where...,用于加号过滤的情况 select char(13)+char(114)+char(115) from user to select concat(char(113),char(114),char(115...: blanks = ("%09", "%0A", "%0C", "%0D") 用这些随机空白符替换 payload 中的空格 union select 1,2--+ to union%09select...i)bORb", "%7C%7C", payload)) 用 && 替换 and ,用 || 替换 or ,用于这些关键字过滤的情况 1 and 1=1 to 1 %26%26 1=1 1 or 1=

4.8K41

在Ubuntu 16.04上安装Odoo 10

部署后,Odoo允许管理员安装任何模块组合,并根据业务需求配置/定制它,范围从小型商店企业级公司。 本教程介绍了如何使用Git源代码在一小内安装和配置Odoo,以便于升级,维护和自定义。....deb 使用dpkg命令安装包: sudo dpkg -i wkhtmltox-0.12.1_linux-trusty-amd64.deb 要确保wkhtmltopdf正常运行,请将二进制文件复制可执行文件路径中的某个位置...在这种情况下,我们使用默认名称,但如果您在创建用户使用了其他名称,请在此处替换。 db_password = FALSE- 更改FALSE为您之前创建的PostgreSQL密码。...如果您使用自定义模块,请添加替换您自己的路径。...将原始配置文件源复制适当的位置: sudo cp /opt/odoo/debian/odoo.conf /etc/odoo-server-te.conf 修改配置文件。

3.3K42
领券