ExpressJS:发送请求标头身份验证

时间:2018-11-12 18:34:16

标签: node.js rest express http-headers http-post

我有一个使用LDAP对用户进行身份验证的API,并且提供了以下信息,其中包括Content-Type:application / json以及请求标头的用户名和密码,然后在正文中传递用户的用户名和密码。我尝试了以下代码,但无法正常工作。我想知道我是否正确传递了标题请求。

@[User::SourceDirectory] + "\\" + REPLACE(SUBSTRING((DT_WSTR,35)((DT_DBTIMESTAMPOFFSET, 7) @[System::StartTime]),1,19),":","")

1 个答案:

答案 0 :(得分:0)

考虑使用axios软件包提出您的请求:https://www.npmjs.com/package/axios

此链接的一节“创建实例以显示如何设置标题”:

11-17 16:24:43.580 9133-9133/com.example.ves.gennaio3 E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.ves.gennaio3, PID: 9133
    android.database.sqlite.SQLiteException: no such table: STORE (code 1): , while compiling: INSERT OR REPLACE  INTO STORE(TOTAL_TEXT,ADDRESS,MAIL,TOTAL_XPOINT,PHONE,CURRENCY,CITY,OWNER,DATE_FORMAT,ID,NAME,PRICE_SEPARATOR,POSTAL_CODE,TAX_CODE,STORE_ID,COUNTRY) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
        at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
        at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:887)
        at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:498)
        at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
        at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
        at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:31)
        at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1469)
        at com.orm.SugarRecord.save(SugarRecord.java:280)
        at com.orm.SugarRecord.save(SugarRecord.java:260)
        at com.example.ves.gennaio3.firebase.FirebaseDatabaseHelper$8.onComplete(FirebaseDatabaseHelper.java:198)
        at com.google.android.gms.tasks.zzj.run(Unknown Source)
        at android.os.Handler.handleCallback(Handler.java:746)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:5443)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

设置了标头后,调用post方法,如下所示:

var instance = axios.create({
  baseURL: 'https://some-domain.com/api/',
  timeout: 1000,
  headers: {'X-Custom-Header': 'foobar'}
});

在以下示例中,您可以将身份验证令牌作为标头传递给您的请求:

instance.post('/my/specific/endpoint/', myData);

因此您可以像这样调用POST端点:

import axios from 'axios';
const MY_BASE_URL = 'https://www.myserver.com/';
class MyLdapService {
  static xhr(accessToken) {
    const options = {
      baseURL: MY_BASE_URL,
      headers: {
        Authorization: `Bearer ${accessToken}`,
        'Content-Type': 'application/json',
      },
    };
    return axios.create(options);
  }
  static async myPostEndpoint(accessToken, data) {
    return new Promise((resolve, reject) => {
      this.xhr(accessToken).post('my-endpoint/', data)
        .then(result => resolve(result.data.card))
        .catch(err => reject(this.createError(err)));
    });
  }
}
相关问题