使用 http 删除终止用户会话

Killing user session using http DELETE

本文关键字:用户 会话 终止 删除 http 使用      更新时间:2023-09-26

我正在开发一个连接到 rest-api 的网站。用户可以登录该网页。我有一个注销按钮,我需要在它后面编写javascript/json/http请求来终止用户会话。这就是我所拥有的,谁能告诉我这是否有意义?

<form action="http://apiaddresshere.com" method="delete" id = "myform">
          <input type = "submit" value="Logout">
        </form>
<script>

var form = document.getElementById("myform");
form.onsubmit = function (e) {
  // stop the regular form submission
  e.preventDefault();

  // construct an HTTP request
  var xhr = new XMLHttpRequest();
  xhr.open(form.method, form.action, true);
  xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
  // send the null data as JSON
  xhr.send(JSON.stringify());
  xhr.onloadend = function () {
    // done
  };
};

</script>
你可以

直接发布到http://apiaddresshere.com/logout。 这将比尝试实现HTTP api的一些极端情况使用要简单得多,也更标准。

简单和标准工作并继续工作,我建议这样做:)

上帝只知道代理服务器或公司防火墙会对您的 DELETE 请求进行什么处理。但是,嘿,当他们不喜欢它时,该应用程序将无法运行。你会理所当然地受到指责。

    <a href="javascript:void(0)" onclick="logout()">Logout</a>
    function logout(){
    $.ajax({
      url: "logout.php",
    type:"post",
dataType: 'json'
    }).done(function() {
    });
    }

避免logoutlogin URI。有动词,不是名词。URI 应表示资源,而不是操作。

如果必须让会话使用类似 URI

apiaddresshere.com/sessions/23245252354323

或类似的东西。然后,要"注销",用户向该会话资源发送DELETE请求。

当然,会话首先并不是特别RESTful,所以这可能是一个有争议的问题。