来自邮递员的天蓝色400请求命中

时间:2017-08-04 06:06:22

标签: node.js rest azure amazon-web-services postman

当我在java环境中执行下面的代码安静时它执行得很好但是如果我正在执行与节点js或邮差相同的操作它会抛出错误

我试图在url3变量中生成的邮递员中点击url,返回400个错误请求。

请求标头也随URL一起传递。

但是同样的url在java环境中获得成功。

private HttpResponse accessTokenStep2(HttpResponse response, Environment environment, String email, String password) throws Exception {
    if(response.getStatusLine().getStatusCode() == 200) {
        String postResponse = EntityUtils.toString(response.getEntity());
        this.transId = getConnectionString(postResponse.toString(), "transId\":\"", "\",\"pageMode\"", 10);
        this.csrfId = getConnectionString(postResponse.toString(), "\"csrf\":\"", "\",\"transId\"", 8);
        String app = environment.getAppUrl();
        String tenant = environment.getTenantId();
        String policy = environment.getPolicy();
        String url2 = "https://" + app + "/" + tenant + "/" + policy + "/SelfAsserted?tx=" + this.transId + "&p=" + policy;
        this.httpPost = new HttpPost(url2);
        List<NameValuePair> nameValuePairs = new ArrayList(3);
        nameValuePairs.add(new BasicNameValuePair("request_type", "RESPONSE"));
        nameValuePairs.add(new BasicNameValuePair("signInName", email));
        nameValuePairs.add(new BasicNameValuePair("password", password));
        nameValuePairs.add(new BasicNameValuePair("g-recaptcha-response-toms", "03AEHxwuy8mq_8jbEWU--XHGea2dF-p7F-oUmZhAgpr1Xt7XyyrzBQpJZJilwhJZPG3D-K_HldpTEEl_2Xi51xm4ICCg6-w66XfR5nE1-Cj39ytH6QZiY2yJUTy-1CJZ6qNfJBsO7EG2Kba7cSGhQgetkhAxJOBtI-FJt5WlRdjP6UHgId11rSVhSCS2kphf1Z-BO62Fu2Jm6jWxnbTiVceEVXuQTOEibtQnQ-n2ckOLI-i0GI1tFBAVi6Lu6NZkQII7m_00ZyJtSoik-1LCNNQ8GXmOxFnnVTnvm-vr3mk_RmNaLS9CT6eGlo0CfpK3DiVTLEArQDTuxY"));
        this.httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        this.httpPost.setHeader("User-Agent", this.userAgent);
        this.httpPost.setHeader("Content-Type", "application/x-www-form-urlencoded");
        this.httpPost.setHeader("Accept", "application/json, text/javascript, **/*//*; q=0.01");
        this.httpPost.setHeader("X-Requested-With", "XMLHttpRequest");
        this.httpPost.setHeader("X-CSRF-TOKEN", this.csrfId);
        response = this.httpClient.execute(this.httpPost);
        return response;
    } else {
        throw new Exception("Unable to get access token step 2");
    }
}

请找到以下节点函数,该函数调用相同的api

    accessTokenStep2 : (obj,env,email,password) => {

    let transId = obj.transid;
    let csrfId = obj.csrfId;
    let app = env.getAppUrl();
    let tenant = env.getTenantId();



    let policy = env.getPolicy();
    let url2 = ("https://" + app + "/" + tenant + "/" + policy + "/SelfAsserted");


    var options = {
        request_type   : "RESPONSE",
        signInName : "*********",
        password : "*****",
        "g-recaptcha-response-toms" : "03AEHxwuy8mq_8jbEWU--XHGea2dF-p7F-oUmZhAgpr1Xt7XyyrzBQpJZJilwhJZPG3D-K_HldpTEEl_2Xi51xm4ICCg6-w66XfR5nE1-Cj39ytH6QZiY2yJUTy-1CJZ6qNfJBsO7EG2Kba7cSGhQgetkhAxJOBtI-FJt5WlRdjP6UHgId11rSVhSCS2kphf1Z-BO62Fu2Jm6jWxnbTiVceEVXuQTOEibtQnQ-n2ckOLI-i0GI1tFBAVi6Lu6NZkQII7m_00ZyJtSoik-1LCNNQ8GXmOxFnnVTnvm-vr3mk_RmNaLS9CT6eGlo0CfpK3DiVTLEArQDTuxY",
        tx : transId,
        p : policy,

    };


 return new Promise( (resolve, reject) => {

     request({
      headers: [{
          'User-Agent'          :  'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0',
          'Content-Type'        : 'application/x-www-form-urlencoded',
          'Accept'              : 'application/json, text/javascript, **/*//*; q=0.01',
          'X-Requested-With'    : 'XMLHttpRequest',
          'X-CSRF-TOKEN'        : csrfId
        }],
        url: url2,
        method: "POST",
        form   : options,
        json: true          
      }, function(error, response, body){

         // console.log(error);
          //console.log(body);
         (response.statusCode == 200 ? resolve(body) : resolve(error));
    });

 });

}

1 个答案:

答案 0 :(得分:0)

headers是一个对象而不是一个数组,请参阅Custom HTTP Headers

尝试:

headers: {
    'User-Agent'          :  'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0',
    'Content-Type'        : 'application/x-www-form-urlencoded',
    'Accept'              : 'application/json, text/javascript, **/*//*; q=0.01',
    'X-Requested-With'    : 'XMLHttpRequest',
    'X-CSRF-TOKEN'        : csrfId
},