【问题标题】:Killing user session using http DELETE使用 http DELETE 杀死用户会话
【发布时间】:2013-11-15 09:17:49
【问题描述】:

我正在开发一个连接到 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>

【问题讨论】:

  • 你有什么问题? “这有意义吗”并没有多大意义......
  • 嗨,Lee,我正在学习如何使用这些技术,只是在寻找一些关于我是否朝着正确方向前进的指导。

标签: javascript html json http rest


【解决方案1】:

您可以只发帖到http://apiaddresshere.com/logout。这将比尝试使用 HTTP api 的一些极端情况更简单、更标准。

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

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

【讨论】:

  • 嗯,我没有意识到我能做到这一点。你能告诉我那可能是什么样子吗?网络开发和休息的总新手,所以发现它有点混乱。
  • 也许其余的按钮都是 AJAX,但注销通常会将用户带到不同的页面!所以只需提交一个普通的香草表单,然后让服务器重定向到/login 页面。在这个中没有任何 AJAX'y。
  • 如果我这样做,是否意味着我根本不需要 javascript?
  • 正确,这不需要JS,只需要普通的HTML。
【解决方案2】:
    <a href="javascript:void(0)" onclick="logout()">Logout</a>
    function logout(){
    $.ajax({
      url: "logout.php",
    type:"post",
dataType: 'json'
    }).done(function() {

    });
    }

【讨论】:

  • 简单的想法,你将json null数据发布到会话杀手页面,它会返回给你json。
  • 好的,那么“logout.php”是从哪里来的?
  • 我写的你可以改。
【解决方案3】:

避免使用 logoutlogin URI。有动词,没有名词。 URI 应该代表资源,而不是操作。

如果您必须进行会话,请使用类似的 URI

apiaddresshere.com/sessions/23245252354323

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-29
    • 2014-03-16
    • 2014-06-21
    • 2018-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-27
    相关资源
    最近更新 更多