Inject Headers

When making a request, you will often send something in the header. For example, sending a CSRF token, authorization, cache-control, etc. in Briz.js, all of these can be injected into the z:before-request event. The way it works is “when the request is about to take place, first add the header written in the z:before-request event, then send it to the endpoint”. Below we will give an example with a CSRF token.

Example

<!-- First create a csrf_token on the server, then put it in the meta tag inside the head (i use astro SSR) -->
<meta name="csrf_token" content={`${csrf_token}`} />
<form data-ajax
  data-swap="result"
  action="/partials/headers" 
  method="post"
>
  <input type="text" name="name" required />
  <button type="submit">Submit</button>
</form>

The developer must put the token from the server in the meta tag inside <head>, then retrieve it and insert it into the HTTP header via an event like the one below.

document.addeEventListener("z:before-request", (event) => {
  const request = event.detail.request
  if(!request) return
  
  if(request.options.method === "POST") {
    //grab csrf_token from meta tag then use it
    const csrf_token = document.querySelector("meta[name='csrf_token']")?.getAttribute("content")
    
    //inject headers
    request.options.headers = {
      ...(request.options.headers || {}),
      "x-csrf-token": csrf_token
    }
  }
})

Try pressing the submit button. The system will make a request to /partials/headers with a csrf_token in the HTTP header. Don’t believe me? Open Chrome DevTools, go to the Network tab, and look at the headers. You’ll see a csrf_token there. just write it once, it will add the csrf token to all requests with the POST method

Demo



Go back