微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JSON 键值与从 Web 表单中的单引号一起发送到 express 和 bodyParser

如何解决JSON 键值与从 Web 表单中的单引号一起发送到 express 和 bodyParser

我正在通过登录表单发送用户名、密码和 h-captcha-response 令牌以表达。用户名和密码从表单中发送得很好,没有单引号,h-captcha-response(由 hcaptcha 制定并发送回 Web 表单并发送)正在发送时带有单引号和 hcaptcha中间件( express-hcaptcha )看不到令牌。中间件的响应是....

var a = []; var b = a.push.bind(a); b(1); console.log(a);

我正在使用 https://github.com/vastus/express-hcaptcha

当我转储 req 时,我看到 h-captcha-response 用单引号括起来。我相信这可能与发送到 express 的表单输入没有设置为 application/json 有关,但这是一个猜测,因为我是 node/express 的新手。

req 转储的适用部分在下面,然后是节点/快递信息。有人可以指出我正确的方向吗?非常感谢JW

请求转储(通过 console.log )

Error: bad request - no token provided in body

js文件的相应部分 ——————

————-
<snip>
….
….
body:
   { username: ‘xxxx’,password: ‘xxxx’,'h-captcha-response': ‘xxxxxxxxxxxxxx’ },_body: true,length: undefined,….
….
<snip>

解决方法

'h-captcha-response' 用引号括起来,因为这是在 javascript 中创建包含特殊字符(在本例中为 -)的对象键的唯一方法:

const bad = { a-b: '' }
            // ^ Parsing error: unexpected token,expected ","

const good = { 'a-b': '' } // no error

虽然 node 没有在这里创建对象,只是将其登录到控制台,但它仍然遵循常见的 js 语法。

至于错误:Error: bad request - no token provided in body。 这是因为 express-hcaptcha 中间件 expects the field named token。如果该字段不存在或评估为 falsy 值,您将获得 error,您现在可以观察。

如果您以 application/x-www-form-urlencoded 的形式发送数据,那么要解决此问题,您必须将 html 表单中验证码字段的 name 属性从 h-captcha-response 更改为 {{1} }.

如果您以 token 的形式发送数据,则对发送 json 对象的键进行相同的重命名。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。