如何解决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 举报,一经查实,本站将立刻删除。