检查api标头中是否存在api令牌

时间:2020-05-08 21:23:33

标签: javascript node.js

我正在尝试测试我的API调用中是否存在API令牌。传递给的标头是-

int a[] = { 1, 2 };
int *p = &a[0];

p + 1 = &a[1];

现在我的代码看起来像

"host": [
          {
            "key": "Host",
            "value": "mydomain"
          }
        ],
        "x-api-key": [
          {
            "key": "x-api-key",
            "value": "mykey"
          }
        ]
      }

我的If Case错误出现,而不是如果标头 // Check if apikey is a part of the headers if ( !headers.hasOwnProperty('x-api-key') || headers['x-api-key'][0].value!="mykey") { const body = 'Unauthorized'; const response = { status: 401, statusDescription: 'Unauthorized', body: body, }; callback(null, response); } 完全丢失,则发送401

x-api-key

我应该如何更改条件,以便在缺少标题键/值的情况下检查键/值对并且没有未定义的错误

1 个答案:

答案 0 :(得分:2)

尝试将代码更新为

 // Check if apikey is a part of the headers 
    if ( !headers.hasOwnProperty('x-api-key') || (headers.hasOwnProperty('x-api-key') && headers['x-api-key'][0].value!="mykey")) { 
        const body = 'Unauthorized';
        const response = {
            status: 401,
            statusDescription: 'Unauthorized',
            body: body,
        };
        callback(null, response);
    }

您的第一个条件检查标头中是否存在x-api-key。第二个条件检查x-api-key的值。

OR的工作方式是,它将在第一次出现true条件时停止执行,或者将处理每个条件。因此,在您的情况下,如果未将x-api-key作为标题传递,则它仍会继续检查第二个条件。由于x-api-key不存在,因此它将无法读取属性的[0]并因此读取错误。

但是AND在第一次出现false条件时停止执行,因此,如果x-api-key不是标题的一部分,则永远不会处理第二条件。