您如何以JSON格式放置用户名/密码以用于设置XHR reques标头

时间:2018-09-13 13:31:02

标签: ajax xmlhttprequest request-headers

在下面的示例中,如果我使用用户名和密码,那么任何人都可以在页面源中看到它。有什么解决方案可以隐藏用户名和密码,或者我们可以将凭据放入jsonxml文件中并访问它以将其设置在标题中,如果可以,请告诉我们解决方案。

$.ajax({     type: "POST",
    contentType: false,
    data: formData,
    url: "external domain URL",
    crossDomain: true,
    cache: false,
    processData: false,

    beforeSend: function(xhr) {

        xhr.setRequestHeader("Authorization", "Basic " + btoa("username" + ":" + "Password"));
        xhr.withCredentials = true;

},

1 个答案:

答案 0 :(得分:0)

您可以将用户名和密码编码为文本并使用该文本,但这是危险且不可行的,因为如果有人出于某种原因设法对其进行解码,那么这将是一个巨大的安全漏洞。而且,如果服务器接受编码的文本,也将造成安全漏洞,因此,除非使用一些临时令牌,否则应避免这种方法,但这只会减少但不能消除这种风险。

相反,如果您有一个页面,它将可以更好地工作:

  • 需要数据时,会将请求发送到服务器以收集用户名和密码
  • 服务器将以这些数据的编码变体作为响应
  • 客户端会对此进行解码
  • 客户端将发送请求

此外,您可以将服务器用作代理,即,将所有请求发送到您自己的服务器而不是目标服务器,并且该服务器依次将请求转发到目标服务器并将响应转发给客户端-侧。这样会更好。