我正在使用nodejs和mongo db进行移动应用程序以获取服务器端功能。
我已经实现了在每个请求中发送的自定义标头,并且我有以下函数来检查标头值。
这是我的代码:
/**
*
* Check Request headers
* @param : headers
* @returns : boolean
*
* */
function checkHeaders(data) {
var customHeader = JSON.stringify(data.appsecret).valueOf().trim();
var contentTypeHeader = JSON.stringify(data["content-type"]).valueOf().trim();
if (contentTypeHeader === "application/x-www-form-urlencoded" && customHeader === "xxxxx") {
return 1;
} else {
return 0;
}
}
这里我总是得到0作为响应,我检查了所有3个变量的值,即1。数据,2。 customHeader,
3。 contentTypeHeader
被正确接收。但if条件中的值不匹配,结果总是得到“0”。
任何建议都会有很大的帮助!
提前致谢!
答案 0 :(得分:0)
我找到了解决方案。数据参数本身是一个对象,不需要stringify操作。
这是更新的代码,工作正常 代码:
/**
*
* Check Request headers
* @param : headers
* @returns : boolean
*
* */
function checkHeaders(data) {
if (data['content-type'] === "application/x-www-form-urlencoded" && data.appsecret === "xxxxx") {
return 1;
} else {
return 0;
}
}
答案 1 :(得分:-1)
好的,所以真正的问题是你在.valueOf
之后使用JSON.stringify
,它返回一个字符串的原始值,它不等于条件中的字符串;尝试删除str.valueOf()
,并在需要时离开.trim()
。
试试这个,并注意==
所在的===
:
return contentTypeHeader == "application/x-www-form-urlencoded" && customHeader == "xxxxx";
而不是:
if (contentTypeHeader === "application/x-www-form-urlencoded" && customHeader === "xxxxx") {
return 1;
} else {
return 0;
}