Skip to main content

CSRF enabled Ajax requests using Spring Security

Many of you who have worked on Spring Security might be aware of the fact that Spring Security protects applications from Cross Site Request Forgery using _csrf tokens in the request sent to the web server. You can find a detailed understanding in the Spring documentation page. The objective of this post is to explain how to send _csrf tokens in the Ajax requests when we protect our application URL and application access using spring security.

How to get CSRF tokens
While we submit a form using an application that is protected with Spring Security, the form gets a default hidden parameter in the form body when using <form:form> element. The param contains the _csrf tokens to authenticate the requests in the server. In case we use other ways to create forms, we have to manually include a hidden parameter that contains name as ${_csrf.parameterName} and  value as ${_csrf.token}. For example,
 <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/

Ajax Requests
While we need  to send ajax requests in an application that is protected with Spring Security, you will most likely find 403 error in the response from the server. This is due to the fact that the server expects a _csrf token that is missing in the XHR. How do we send csrf tokens in the ajax request so the server is happy to regard our request legitimate and help us with the response we need? Well, there are two ways we can do.
  1. Generate csrf token header using spring security and set it in the ajax header.
  2. Generate csrf token using spring security and send them in the ajax request either via GET or POST.

Generate CSRF Tokens
Spring security provides specific taglib that we can use to generate the CSRF tokens for sending them in the XHR requests.
 <%@taglib prefix="sec" uri=""%>
The tag provides so many features that cater to security requirements. One of the usages of the taglib is to generate the metatags in the header.
 <sec:csrfMetaTags />
This will generate meta tags that are shown as below.
<meta name="_csrf_parameter" content="_csrf" />
<meta name="_csrf_header" content="X-CSRF-TOKEN" />
<meta name="_csrf" content="897dc174-8aac-44be-bf63-7395bcac87f2" />
The above well fits into if we use taglibs and JSPs. But for those who prefer to use other templates like Thymeleaf, the csrf tokens can be obtained using the approach explained in the `How to get CSRF tokens`.

CSRF token or Header?
Depending on the use case, we can set the CSRF token header or just CSRF token. For both GET or POST method, we can exploit the header approach to set the CSRF token header. But in case we need the CSRF token in the request param or request body, we can use just CSRF token. The below approach is based on setting it in the header so it fits for any requests. Assuming we have spring security metatags,
var csrfHeader = $("meta[name='_csrf_header']").attr("content");
var csrfToken  = $("meta[name='_csrf']").attr("content");
we create variables like these from meta tag content. And we set them in the header like below.
                 type : 'select',
                 source : MAKINUSCV.baseURL + '/admin/user/list/',
                 url : MAKINUSCV.baseURL + '/admin/user/list/do/',
                 ajaxOptions: {
                               beforeSend: function (xhr)
                                   xhr.setRequestHeader(csrfHeader, csrfToken);
                 success : function(response, newValue) {
                        if (response.status == 'error')
                     return response.msg;

In case we need to set in the request param or request body, we will be creating a data object in which we will set CSRF token. In that case, we will want to use the _csrf_parameter variable, not _csrf_header.
var csrfParam   = $("meta[name='_csrf_parameter']").attr("content");
var data        = {};
data[csrfParam] = csrfToken;
And pass the data object to ajax request. If its GET request, just append the csrfParam and csrfToken in the url request.


  1. Very good ideas and this was very useful for my professional oriented. Thanks for you provides a great post and I expect to you more information. Your written style is very impressed to me and I'm waiting for your updates...
    Spoken English Classes in Chennai
    Best Spoken English Classes in Chennai
    Html5 Training in Chennai
    IELTS Coaching in Chennai
    Pega Training in Chennai
    Japanese Classes in Chennai
    TOEFL Coaching in Chennai
    Spoken English Classes in Porur
    Spoken English Classes in Anna Nagar

  2. Nice post with lots of information keep up the good work

    Python Course | Digital Marketing Course | Java Course

  3. Thanks for sharing information. Choosing computer accessories from leading IT store offer great discount and value for your money Computer Store Australia | All in One Pc Australia

  4. Incredible post I should say and a debt of gratitude is in order for the data. Schooling is certainly a tacky subject. Be that as it may, is still among the main subjects within recent memory. I appreciate your post and anticipate more. You have made some valid statements there. I looked on the web to study the issue and discovered a great many people will oblige your perspectives on this site...
    paper airplane that flies far and straight | windfin | stable paper airplane | nakamura paper airplane | paper airplane templates for distance | paper airplane designs

  5. If you have bad credit and you can't qualify for a 0% APR credit card, don't give up and swear off dentists until you win the lottery. It's a tough situation, but you still have some dental financing options to consider.

  6. Your post is really good thanks for sharing these kind of post but if anyone looking for Best Consulting Firm for Fake Experience Certificate Providers in mumbai, India with Complete Documents So Dreamsoft Consultancy is the Best Place.Further Details Here- 9599119376 or Visit

  7. toptan iç giyim tercih etmenizin sebebi kaliteyi ucuza satın alabilmektir. Ürünler yine orjinaldir ve size sorun yaşatmaz. Yine de bilinen tekstil markalarını tercih etmelisiniz.

    Digitürk başvuru güncel adresine hoşgeldiniz. Hemen başvuru yaparsanız anında kurulum yapmaktayız.

    tutku iç giyim Türkiye'nin önde gelen iç giyim markalarından birisi olmasının yanı sıra en çok satan markalardan birisidir. Ürünleri hem çok kalitelidir hem de pamuk kullanımı daha fazladır.

    nbb sütyen hem kaliteli hem de uygun fiyatlı sütyenler üretmektedir. Sütyene ek olarak sütyen takımı ve jartiyer gibi ürünleri de mevcuttur. Özellikle Avrupa ve Orta Doğu'da çokça tercih edilmektedir.

    yeni inci sütyen kaliteyi ucuz olarak sizlere ulaştırmaktadır. Çok çeşitli sütyen varyantları mevcuttur. iç giyime damga vuran markalardan biridir ve genellikle Avrupa'da ismi sıklıkla duyulur.

    iç giyim ürünlerine her zaman dikkat etmemiz gerekmektedir. Üretimde kullanılan malzemelerin kullanım oranları, kumaşın esnekliği, çekmezlik testi gibi birçok unsuru aynı anda değerlendirerek seçim yapmalıyız.

    iç giyim bayanların erkeklere göre daha dikkatli oldukları bir alandır. Erkeklere göre daha özenli ve daha seçici davranırlar. Biliyorlar ki iç giyimde kullandıkları şeyler kafalarındaki ve ruhlarındaki özellikleri dışa vururlar.

  8. I generally check this kind of article and I found your article which is related to my interest. Genuinely it is good and instructive information. Thankful to you for sharing an article like this. acmc token price

  9. Can you make a video about it? I think such video will look great on youtube. From here you can get likes for your video

  10. Have to work? need of money but have no experience certificate. Get in touch with us we provide experience certificate in Mumbai 100% genuine certificate in Mumbai. It will help it your courier. So don’t be late. Get your experience letter now. For experience letter in Mumbai contact at 9599119376 or can visit our website at

  11. Have to work? need of money but have no experience certificate. Get in touch with us we provide experience certificate in Gurgaon 100% genuine certificate in Gurgaon. It will help it your courier. So don’t be late. Get your experience letter now. For experience letter in Delhi contact at 9599119376 or can visit our website at

  12. You’re so interesting! I don’t believe I’ve truly read something like this before. So great to find someone with genuine thoughts on this issue. Really.. many thanks for starting this up. This website is something that’s needed on the internet, someone with some originality!

    CBSE Schools In Ahmedabad
    CBSE Schools In Surat
    CBSE Schools In Rajkot
    CBSE Schools In Visakhapatnam
    CBSE Schools In Kangra
    CBSE Schools In Shimla
    CBSE Schools In Jammu
    CBSE Schools In Solan
    CBSE Schools In Mangalore
    CBSE Schools In Mysore

  13. I read the above article and I got some knowledge from your article. It's actually great and useful data for us. Thanks for share it. Information Security Training In Canada

  14. It is what I was searching for is really informative. It is a significant and useful post for us. Thankful to you for sharing video like this. SEO service provider in India

  15. I'm really inspired together with your writing skills and also with the layout for your weblog. Thanks for sharing this blog here. Privileged Access Management Solutions Software

  16. สูตรลอตเตอรี่ที่คำนวณแบบสำเร็จรูปนั้นสามารถใช้ได้กับทุกสลากกินแบ่งออนไลน์ เป็นสูตรที่คำนวณจากสถิติที่ถูกต้องโดยฝังสถิติสลากกินแบ่งมากยิ่งกว่า 10 ปีลงเอา เเทงหวย ไว้ภายในระบบโปรแกรมจากนักเขียนโปรแกรมคำนวณสลากกินแบ่งที่มากประสบการณ์มาทำไว้ให้ และก็ในกระดานลอตเตอรี่เราประเทศไทยนี้ ยังมีดูดวงโหราศาสตร์เกี่ยวกับการเล่นลอตเตอรี่ เเทงหวยออนไลน์ เพื่อลดการเสี่ยงการเล่นว่าจะซื้อวันนี้ดีไหม โชควันนี้คืออะไร จะไปซื้อลอตเตอรี่ทางด้านไหนทางไหนดี แม้กระทั้งวิธีการทำนายฝันของความฝันแต่ละคนฝันว่าอะไร ฝันมองเห็นอะไรก็มาเป็นดูดวงชะตาพยากรณ์ฝันสลากกินแบ่งได้แต่ละวันเช่น เว็บหวย เดียวกันเป็นทายฝันที่แม่นที่สุด รวมทั้งจำนวนถูกต้องแม่นยำ เพื่อช่วยลดการเสี่ยงของคนเล่นสลากกินแบ่งได้อย่างดีเยี่ยม

  17. สลากกินแบ่งออนไลน์
    เรียกว่าในตอนนี้กำลังเป็นที่นิยมอย่างยิ่ง และออกรางวัลแทบทุกวี่วันอย่างยิ่งจริงๆสำหรับ ลอตเตอรี่ออนไลน์ ในตอนนี้เข้าใจกันอยู่ว่าการจำหน่ายสลากกินแบ่งผ่านอินเทอร์เน็ตเป็นเรื่องที่ไม่ยาก โดยแนวทางการซื้อนั้นสามารถทำเป็น ด้วยการเติมเงินเข้าระบบ แต่ว่าคุณควรมีบัญชีผู้ใช้แล้วก็รหัสผ่านสำหรับการเข้าใช้งานก่อน ก็เลยจะสามารถซื้อสลากกินแบ่งออนไลน์บนเว็บนั้นๆได้สิ่งจำเป็นที่สุดมันก็คือส่วนวิธีขาย ลอตเตอรี่ฮานอย จะแบ่งได้เป็น 2 แบบหมายถึงเป็นเจ้าของเว็บหรือที่เรียกกันว่าเจ้ามือขายสลากกินแบ่งออนไลน์ แทงหวยฮานอย แล้วก็เป็นผู้แทนขายลอตเตอรี่ออนไลน์นั่นเอง

    สำหรับจุดเด่นของการเล่น หวยออนไลน์ โดยยิ่งไปกว่านั้นในออนไลน์ สิ่งจำเป็นมันก็คือว่าพวกเรานั้นสามารถจำหน่ายง่ายผ่านอินเทอร์เน็ต ไม่ยุ่งยากสบายเร็วไว แล้วก็สิ่งจำเป็นที่สุดซึ่งก็คือว่าสำเร็จทดแทนสูง เนื่องด้วยเป็นการซื้อแบบไม่ผ่านพ่อค้าคนกลาง แล้วก็ลดการเอารัดเอาเปรียบผู้ซื้อ ถ้าหากว่าถูกรางวัล จะได้รับเงินอย่างเร็ว ไม่เกิน 6 นาฬิกาเย็น ข้างในวันที่ลอตเตอรี่ออก สลากกินแบ่งออนไลน์ขยายเวลาการค้าขายในวันที่สลากกินแบ่งออกถึง 15.30 น. ซื้อได้ในราคาที่ระบุ ราคาแพงที่แน่ๆ ลอตเตอรี่ลาว สามารถตรึงราคาได้ หวยออนไลน์ สลากกินแบ่งออนไลน์สามารถซื้อได้ทุกจำนวน ไม่มีเลขกลั้นหรือระบบเลขเต็ม ลดปัญหาเรื่องการซื้อหวยลง

  18. Thanks for sharing informative post. Are looking for best Tamil typing tool online, make use of our Tamil typing software to make translation faster. Thirumana Porutham in Tamil | Samacheer Kalvi Books PDF

  19. Lion123 เว็บไซต์คาสิโนออนไลน์ ที่มาแรงที่สุดตอนนี้ ข้างในเว็บไซต์นั้นมีทุกการพนัน ไม่ว่าจะเป็น กีฬา คาสิโน สล็อต บาคาร่า รูเล็ต เสือมังกร ยิงปลา คาสิโนออนไลน์ แล้วก็อื่นๆอีกมาหมาย เว็บไซต์ lion123 นั้นมีความน่าไว้วางใจ เป็นเว็บไซต์ที่นักพนันนั้นเอ๋ยถึงเยอะที่สุด รับประกันจากเสียงของสมาชิกในเว็บไซต์พวกเรา ตอบปัญหามาที่สุด ระบบออโต้ ใช้งานง่าย เร็ว ไม่ต้องคอยอะไรบ้างในนานๆ มีทุกสิ่งครบพนันเว็บไซต์เดียวจบทุกสิ่ง lion123 การเข้าถึงง่ายดาย การันตีวัสดุอุปกรณ์ทุกต้นแบบ ใช้งานสบาย เร็ว ไม่มีอันตราย แน่ๆ 100%

  20. สำหรับเว็บไซต์ สล็อตpg ของพวกเรานั้น พวกเราชูมาให้ท่านแล้วตรงนี้ที่เดียว SLOT XO เล่นบันเทิงใจ เล่นง่าย ได้เงินจริง สำหรับเว็บไซต์ของพวกเรานั้นมีเกมน่าเลือกล่นมาก สามารถที่จะสร้างผลกำไรจากการเล่นได้ สร้างผลกำไรได้อย่างดีเยี่ยม รวมทั้งสามารถที่จะเข้ามาพนันกับทางเว็บไซต์ slot xo พวกเราได้ตลอด 1 วัน

    ท่านเองสามารถที่จะเข้ามาพนันกับทางเว็บไซต์ Slot pg พวกเราได้ เว็บไซต์ของพวกเรานั้นเป็นเว็บไซต์ที่เยี่ยมที่สุด ใช้งานง่ายสุดๆที่สุด งามสูงที่สุดแล้วเวลานี้ พวกเรามากับความแปลกใหม่ คัดสรรเกม slotpg ที่มีความมากมาย เล่นบันเทิงใจได้ตลอด 1 วัน มีเกมสล็อตดังนานัปการค่าย ไม่ต้องเดินทางให้เสียเวล่ำเวลา อยู่ที่แหน่งใดก็พนันได้ เล่นผ่านมือถือได้ เล่นสนุกสนาน รวมทั้งได้เงินจริง สามารถสร้างผลกำไรได้มาก

  21. pg slot เกมสล็อต Pg Slot ธีมอาหาร น่าเล่น ให้ได้รู้จักกันได้เงินจริง 100% เล่นง่าย ได้เงินไว ต้องที่เว็บเราเท่านั้น ฝากถอนไม่มีขั้นต่ำ PG-SLOT.GAME สล็อตเว็บอันดับ 1 สมัครสมาชิกรับโบนัสทันที!

  22. Many website owners erroneously make the assumption that optimization was included in development. It rarely is. Or perhaps it's more appropriate to say that sufficient optimization was likely not included bmrb wisc edu

  23. ไม่ว่าจะเติมเงินเท่าไหร่ PG ก็มีโอกาสได้รับเงินรางวัลมากมาย พร้อมมีให้เลือกเพิ่มเติมกับเครดิตฟรี มีให้รับอย่างหลากหลาย ไม่ว่าจะเป็นโปรโมชั่นสมัครสมาชิก แนะนำเพื่อน ฝากทั้งวัน และรวมไปถึงคืนยอดเสีย ได้ตลอด 24 ชั่วโมง

  24. เดิมพันน้อย ก็สามารถทำกำไรได้อย่างมากมาย กับเครดิตฟรี ที่รับได้อย่างมากมาย ไม่ว่าจะเป็นโปรโมชั่นสมัครสมาชิก โปรโมชั่นแนะนำเพื่อน โปรโมชั่นฝากทั้งวัน และโปรโมชั่นคืนยอดเสีย รับเครดิตได้ตลอดทั้งเดือน พีจี

  25. Creating a number of cybersecurity precautions will protect you and your family, as well as your coworkers, and your employer. Cybersecurity Risk Manager Career Overview

  26. Psychologically, young buyers like us fail to truly do the math on property taxes, homeowners Insurance, flood Insurance, earthquake Insurance, plumbing, yardwork, general maintenance, drainage, so on and so forth.  Young couples buy what we can afford, not what we will need: our home is too small now that we have added a second child. What Is Aetna Critical Illness Insurance


Post a Comment

Popular posts from this blog

A wonderful technique to reduce website development cost

Websites - Good way to get online presence Websites are very vital to get online presence of any business nowadays. Websites are categorized into two different types. First one is Static Website and second one is Dynamic Website, normally known as web applications. Static websites are most widely used for any business since they help to bring up the online presence more easily and quickly. Depending on the content and features, static websites cost around $300-$700 . It includes web design and development. Apart from that, the business has to spend for hosting space and domain name for the website. Cloud based development is now more prevalent. Building a website and running it will be very easy and cheap using these cloud infrastructure. But the difficulty facing the development of static websites still looms high as it does not matter who provides the infrastructure. The development cost is still same. Technology - LAMP Static websites are developed using HTML and PHP mostly

Disable Datasource Auto Configuration in Spring Boot

Today morning, We had an interesting situation. Our spring boot application which is configured to run on MySQL needs to be run on a system which does not have MySQL database installed. But we had to develop few UI modules alone. So we decided to go ahead but how do we disable MySQL database auto-configuration? Here is what we did . Spring Boot is an interesting framework that helps auto configure everything for you. In case you need to override any of the auto-configuration, all you need to do is to simply customize it. The auto-configuration backs away. In this typical scenario, we dont want to customize the auto-configuration, rather we want to disable it temporarily until we complete our UI modules. As soon as the system is ready or we find alternate systems, we can run the Application with full-blown schema. OK. so how did we disable the database auto configuration? We are using Spring Boot with JPA, Hibernate and FlywayDB migration tool. If this is going to be your boot