【问题标题】:HTTP Rquest Response in a function函数中的 HTTP 请求响应
【发布时间】:2016-10-14 17:19:43
【问题描述】:

我必须点击一个 URL 并取回其加密数据响应,并使用该加密数据通过密钥解密数据。

我使用 POSTMAN 来获取数据响应,但当我查看它时,它只是一些符号,而不是像数据响应那样的任何东西。所以,它是加密的。

我已经有一个将加密响应转换回纯文本的功能,但现在,我不明白如何将该数据响应转换为纯文本,因为我必须首先获取该数据响应,然后只使用该数据响应在一个解密函数的参数中,在密钥的帮助下,我可以把它改回纯文本。

我知道如何将密文更改为 pln 文本,但这里的情况有点不同。

但是由于我必须取回数据响应,所以我不应该发出 POST 请求来获取它,或者我理解错了。

这是我的解密函数-

function decryptByDES(cipherTextString, keyString) {
        var keyHex = CryptoJS.enc.Utf8.parse(keyString);

        var decrypted = CryptoJS.DES.decrypt({
            ciphertext: CryptoJS.enc.Base64.parse(cipherTextString)
        }, keyHex, {
            mode: CryptoJS.mode.ECB,
            padding: CryptoJS.pad.Pkcs7
        });

        alert(decrypted);

        return decrypted.toString(CryptoJS.enc.Utf8);
    }

当我调用它时在这里

<button onclick="decryptByDES('aHJHDJSHJhjsak=', 'ALSOWURNsa');">View</button>

我提供或指定密文字符串和密钥字符串,因为我仅将其用于测试没有安全问题。它在警报框中给出解密的值。

所以,总而言之,我想知道如何获得加密的数据响应并在函数中使用它,所以像纯文本一样阅读它。

编辑:

在 POSTMAN 的帮助下,我为 Javascript Ajax 调用生成了代码

var settings = {
  "async": true,
  "crossDomain": true,
  "url": "http://192.168.168.76:8080/HTMLPortingNewService/GetData?ChartName=widget3LineChart&lob=M&carrier=0&enrollmenttype=0&state=0&agent=0&fromdate=04%2F03%2F2015&todate=05%2F03%2F2015&requestID=499F6BF5E4610454A887AB37AF0814E8",
  "method": "POST",
  "headers": {
    "cache-control": "no-cache",
    "postman-token": "ac20a050-a8c8-6d58-4350-66141d519394",
    "content-type": "application/x-www-form-urlencoded"
  },
  "data": {
    "username": "aHRtbHVzZXIx",
    "password": "SHRtbDIwMTY="
  }
}

$.ajax(settings).done(function (response) {
  console.log(response);
});

那么,现在如何在我的函数中调用此响应??

【问题讨论】:

  • 你会为此创建一个 jsfiddle 吗?
  • 这只是将加密响应转换回纯文本jsfiddle.net/yktup39e
  • 您不清楚是发出GET 还是POST 请求?使用与 POSTMAN 相同的请求。 POSTMAN也可以为你生成代码,在菜单中选择javascript ajax
  • @shv22 :乍一看,解密代码似乎很好,如果您在客户端加密和解密消息,则不发送请求,它工作正常吗?
  • 是的,我可以加密和解密消息,但主要是我必须测试数据响应

标签: javascript jquery html http xmlhttprequest


【解决方案1】:

你必须在 ajax 完成后调用decryptByDES

    function callServer(){
       var settings = {
            "async": true,
            "crossDomain": true,
            "url": "http://192.168.168.76:8080/HTMLPortingNewService/GetData?ChartName=widget3LineChart&lob=M&carrier=0&enrollmenttype=0&state=0&agent=0&fromdate=04%2F03%2F2015&todate=05%2F03%2F2015&requestID=499F6BF5E4610454A887AB37AF0814E8",
            "method": "POST",
            "headers": {
            "cache-control": "no-cache",
            "postman-token": "ac20a050-a8c8-6d58-4350-66141d519394",
            "content-type": "application/x-www-form-urlencoded"
          },
          "data": {
            "username": "aHRtbHVzZXIx",
            "password": "SHRtbDIwMTY="
          }
        }

        $.ajax(settings).done(function (response) {
          console.log(response);
          decrypted = decryptByDES(response, keyString);
          console.log(decrypted);
        });
    }

在你的 HTML 中调用这个函数:

<button onclick="callServer();">View</button>

【讨论】:

  • 所以,在这里我将把整个 var settings = { "async": true, "crossDomain": true,... 包含在一个函数中,然后调用该函数并添加decrypted=decryptByDES。 ..控制台日志后...是不是?
  • 我试过了还是不行...其实点击后什么都没有显示...
  • 你能把整个事情发布在答案中吗?我对此感到非常困惑
  • 完成。我添加了所有功能。
  • 我编辑了我的文件,但点击后什么也没有发生...我在开发人员菜单中检查了网络选项卡...它给出了错误 ReferenceError: $ is not defined
猜你喜欢
  • 1970-01-01
  • 2012-08-30
  • 2021-08-28
  • 2020-11-17
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多