Я работаю над сайтом, который связан с отдыхом-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. Но, эй, когда им это не нравится, приложение не сработает. И ты по праву обвинишься.
/login
. Ничего AJAX'ы в этом, вообще.
Избегайте logout
и login
. Есть глаголы, а не существительные. URI должны представлять ресурсы, а не действия.
Если вы должны иметь сеанс, используйте URI, например
apiaddresshere.com/sessions/23245252354323
или что-то типа того. Затем, чтобы "выйти из системы", пользователь отправляет запрос DELETE
этому ресурсу сеанса.
Конечно, сеансы, в первую очередь, не особенно RESTful, так что это может быть спорным вопросом.
<a href="javascript:void(0)" onclick="logout()">Logout</a>
function logout(){
$.ajax({
url: "logout.php",
type:"post",
dataType: 'json'
}).done(function() {
});
}