Enviar Post request sin utilizar form

smintcs

Tengo una aplicación que usa Spring Security con javaconfig, y la petición para el logout tiene que ser una petición POST a /logout.

Con un formulario mínimo con un botoncillo me apaño pero la verdad que me gustaría que fuera un enlace sin más, como el que hay aquí en mv de Salir.

He mirado un poco y veo que hay alguna manera de hacerlo con ajax y también con php, pero me gustaría alguna opción un poco mas simple, me parece raro que no exista esto.

Había pensado en que el link le haga un GET al controlador y desde el controlador hacer redirect, pero tampoco veo la manera de hacerlo, pues los redirects me los hace GET.

Ahora tengo esto, el th es de thymeleaf pero no tiene que ver

			[code]	<form class="form-inline" action="#"
					th:action="@{/logout}" method="post">
					<input type="submit" value="Log out" />
				</form>[/code]

En plan offtpic estoy muy verde en programación web y no tengo todo del 100% claro. Probablemente se pueda cambiar para que el logout sea en otro sitio pero no quiero esto en principio. Por otro lado no se hasta que punto seria seguro esto del enlace, aunque ahora lo tengo desactivados los tokens csrf porque no tengo ni idea de como van (se mas o menos lo que es y para que sirve) pero estoy viendo que de hecho esto se hace por metodo POST para añadir el token ahi.

Siempre podría meterme en investigar como cambiar la manera del logout, meter el token en la sesión o cosas así, pero con lo del titulo me vale, tengo mucho cacao y por ahora quiero meterme en cuanto menos jardín mejor.

S

Tu mismo te respondes, tienes que usar AJAX en el evento click del boton/texto. Es totalmente simple, puedes enviar un post a la url que quieras.

xmlhttp=new XMLHttpRequest();
xmlhttp.open("POST","logout",{});
xmlhttp.send();
B

No puedes simular un "DELETE" mejor para el logout?

smintcs

La opcion del DELETE veo por ahi que es lo mas correcto, voy a borrar cosas del servidor rollo tokens sesiones y movidas, pero en principio seria un follon cambiar esto para que entre por DELETE

Mirare lo de ajax gracias, nunca he hecho nada con ajax y queria centrarme en spring por ahora pero bueno, nunca esta de más.

1 respuesta
B

#4 No se como ira en spring, pero con que mandes la petición con DELETE en vez de con POST algo mejorará

Usuarios habituales