Livewire version
2.12
Which PHP version are you using?
PHP 8.2
Repository URL
No response
Steps To Reproduce
Note: This bugs never appeared in local env .
In production env i have :
docke-compose.ym file (some sensitive info are hidden):
version: "3.3"
networks:
myxx:
services:
nginx:
image: nginx:1.23.3-alpine
volumes:
- ./src/:/var/www/html/
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
networks:
- myxx
depends_on:
- php
deploy:
resources:
limits:
memory: 512M
restart: unless-stopped
php:
restart: unless-stopped
build:
context: ./php
dockerfile: Dockerfile
volumes:
- ./src/:/var/www/html/
- ./php/config/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
- ./php/supervisor/conf.d:/etc/supervisor/conf.d
command: bash -c "touch /var/run/supervisor.sock && supervisord -c /etc/supervisor/supervisord.conf"
mysql:
restart: unless-stopped
image: mariadb:latest
networks:
- myxx
volumes:
- ./mysql:/var/lib/mysql
Dockerfile
FROM php:8.2-fpm
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
RUN apt-get update && \
apt-get install openssl -y && \
apt-get install libssl-dev -y && \
apt-get install wget -y && \
apt-get install git -y && \
apt-get install procps -y && \
apt-get install libboost-all-dev -y && \
apt-get install htop -y && \
apt-get install libzip-dev -y && \
apt-get install libpng-dev -y
RUN apt-get install -y --no-install-recommends supervisor
RUN chmod +x /usr/local/bin/install-php-extensions && sync && \
install-php-extensions
RUN docker-php-ext-install pdo pdo_mysql zip pcntl pcntl
RUN install-php-extensions memcached
ENV CFLAGS="$CFLAGS -D_GNU_SOURCE"
RUN docker-php-ext-install sockets
RUN install-php-extensions exif
RUN docker-php-ext-enable pdo pdo_mysql zip pcntl pcntl memcached sockets exif
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
RUN touch /usr/local/etc/php/conf.d/uploads.ini \
&& echo "upload_max_filesize = 100M; post_max_size = 100M;" >> /usr/local/etc/php/conf.d/uploads.ini
RUN apt update && \
apt install -y mariadb-client
nginx.conf
server {
listen 80;
listen [::]:80 default ipv6only=on;
client_max_body_size 500M;
server_name web;
root /var/www/html/public;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
index index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
my haproxy :
frontend http
bind *:80
bind *:443 ssl crt /etc/letsencrypt/live/www.xx.com/all.pem crt /etc/letsencrypt/live/admin.xx.com/all.pem
mode http
http-request redirect scheme https unless { ssl_fc }
timeout connect 5000
timeout client 50000
timeout server 50000
acl xxSiteDomain hdr(host) -i www.xx.com
acl xxSiteDomain hdr(host) -i xx.com
acl xxAdminDomain hdr(host) -i admin.xx.com
use_backend xx if xxSiteDomain
use_backend xxAdmin if xxAdminDomain
backend xx
mode http
server website 0.0.0.0:85 check
backend xxAdmin
mode http
server admin 0.0.0.0:82 check
i have livewire form :
<div x-data="dropFileComponent">
<section class="job_apply_area sec_pad">
<div class="container-fuild">
<div class="row flex-row-reverse">
<div class="col-lg-4 pl_70">
<div class="job_info">
<div class="info_head">
<i class="ti-receipt"></i>
<h6 class="f_p f_600 f_size_18 t_color3">Qualifications du poste</h6>
</div>
<div class="info_item">
<i class="ti-ruler-pencil"></i>
<h6>Le poste</h6>
<p>Ce que vous souhaitez</p>
</div>
</div>
</div>
<div class="col-lg-8">
<div class="job_apply">
<div class="sec_title mb_70">
<h3 class="f_p f_size_22 f_600 t_color3 mb_20">Rédigez votre candidature</h3>
<p class="f_400 f_size_15">Grâce à cette interface, votre CV bénéficiera d'un traitement
prioritaire. Renseignez vos informations avec précision et n'oubliez pas de joindre
votre CV. Maximisez vos chances d'être remarqué !</p>
</div>
<form class="row apply_form" wire:submit.prevent="submit">
<div class="form-group col-lg-6">
<input type="text" placeholder="Votre nom et prénom"
wire:model.debounce.500ms="nom_et_prénom"
class="@error('nom_et_prénom') is-invalid @enderror form-control"
id="validationServer03" aria-describedby="validationServer03Feedback">
@error('nom_et_prénom')
<div id="validationServer03Feedback" class="invalid-feedback">
{{ $message }} </div>
@enderror
</div>
<div class="form-group col-lg-6">
<input type="text" placeholder="Votre e-mail" wire:model.debounce.500ms="email"
class="@error('email') is-invalid @enderror form-control" id="validationServer04"
aria-describedby="validationServer04Feedback">
@error('email')
<div id="validationServer04Feedback" class="invalid-feedback">
{{ $message }} </div>
@enderror
</div>
<div class="form-group col-lg-12">
<input type="text" placeholder="Votre numéro de téléphone"
wire:model.debounce.500ms="numéro_de_téléphone"
class="@error('numéro_de_téléphone') is-invalid @enderror form-control"
id="validationServer05" aria-describedby="validationServer05Feedback">
@error('numéro_de_téléphone')
<div id="validationServer05Feedback" class="invalid-feedback">
{{ $message }} </div>
@enderror
</div>
<div class="form-group col-lg-12">
<textarea cols="30" rows="10" placeholder="Rédigez votre lettre de motivation"
wire:model.debounce.500ms="lettre_de_motivation"
class="@error('lettre_de_motivation') is-invalid @enderror form-control" id="validationServer06"
aria-describedby="validationServer06Feedback">
</textarea>
@error('lettre_de_motivation')
<div id="validationServer06Feedback" class="invalid-feedback">
{{ $message }} </div>
@enderror
</div>
<div class="form-group col-lg-12 mt-3 mb-3">
<div class="input-group mb-3 glow">
<input type="text" class="form-control w-50"
placeholder="Télécharger notre fiche de conseils"
aria-describedby="button-addon2" readonly>
<button class="btn btn-outline-secondary btn-lg" type="button" id="button-addon2"
style="background: #5e2ced; color: white"
onclick="window.open('/recrutement.pdf');">Je télécharge le
pdf</button>
</div>
</div>
<div class="form-group col-lg-12">
<div class="upload_box" class="p-5 my-3 rounded"
x-bind:class="dropingFile ? 'bg-gray-400 border-gray-500 upload_box-dragging' :
'border-gray-500 bg-gray-200'"
x-on:drop="dropingFile = false" x-on:drop.prevent="handleFileDrop($event)"
x-on:dragover.prevent="dropingFile = true"
x-on:dragleave.prevent="dropingFile = false"> Déposer votre CV ici (PDF):
<input wire:target="cv" type="file" id="File" wire:model="cv"
class="@error('cv') is-invalid @enderror form-control" id="validationServer07"
aria-describedby="validationServer07Feedback">
@error('cv')
<div id="validationServer07Feedback" class="invalid-feedback">
{{ $message }} </div>
@enderror
<div wire:loading wire:target="cv">
<center>
<div class="spinner-border text-primary" role="status"></div>
</center>
</div>
@if ($cv !== null and !$errors->has('cv'))
<div class="alert success mt-3">
<div class="alert_body">
<i class="icon-check"></i>
Votre CV a été téléchargé avec succès !
</div>
</div>
@endif
</div>
</div>
<div class="col-lg-12">
<div>
@if (session()->has('already-saved'))
<div class="alert alert-danger">
{{ session('already-saved') }}
</div>
@endif
</div>
<p>Cliquez sur envoyer pour que l'on recoivent votre candidature</p>
<button type="submit" class="btn_three">Je postule ! <div wire:loading
wire:target="submit" class="spinner-border spinner-border-sm" role="status">
</div></button>
</div>
</form>
</div>
</div>
</div>
</div>
</section>
</div>
@push('scripts')
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<script>
window.addEventListener('job-offer-submitted', event => {
Swal.fire(
'Bravo !',
'Votre candidature a bien été envoyé !',
'success'
)
});
function dropFileComponent() {
return {
dropingFile: false,
handleFileDrop(e) {
if (event.dataTransfer.files.length > 0) {
const file = e.dataTransfer.files[0];
// console.log(file)
@this.upload('cv', file, (uploadedFilename) => {
console.log(uploadedFilename)
});
}
}
}
}
</script>
@endpush
<?php
namespace App\Http\Livewire;
use Livewire\Component;
use Livewire\WithFileUploads;
use App\Mail\CandidateApplied;
use App\Mail\CandidatSended;
use Illuminate\Support\Facades\Mail;
class JobApplyDemande extends Component
{
use WithFileUploads;
public $nom_et_prénom;
public $email;
public $numéro_de_téléphone;
public $lettre_de_motivation;
public $cv;
protected $rules = [
'nom_et_prénom' => 'required|max:20',
'email' => 'required|email',
'numéro_de_téléphone' => 'required|max:20',
'lettre_de_motivation' => 'required|max:5250',
'cv' => 'required|file|mimes:pdf|max:2500',
];
public function updated($propertyName)
{
$this->validateOnly($propertyName);
}
public function render()
{
return view('livewire.job-apply-demande');
}
public function submit()
{
$this->validate();
$cvPath = $this->cv->store('cvs', ['disk' => 'public']);
$this->dispatchBrowserEvent('job-offer-submitted');
}
}
sometimes when i user types only one alphabet to the form the ajax request sent but the response js json with errors :
{
"fingerprint": {
"id": "PwGidoftvVvUTZ3sYTIr",
"name": "job-apply-demande",
"locale": "fr",
"path": "recrutement/demande-f1",
"method": "GET",
"v": "acj"
},
"serverMemo": {
"children": [],
"errors": [],
"htmlHash": "813ed1e0",
"data": {
"nom_et_prénom": null,
"email": null,
"numéro_de_téléphone": null,
"lettre_de_motivation": null,
"cv": null
},
"dataMeta": [],
"checksum": "89d87d388027d64fb7906e4ff739236f6912dc193346090ef8af3272616345f3"
},
"updates": [
{
"type": "syncInput",
"payload": {
"id": "txkg",
"name": "nom_et_prénom",
"value": "dw"
}
}
]
}{
"effects": {
"html": null,
"dirty": []
},
"serverMemo": {
"data": {
"nom_et_pr\u00e9nom": "dw",
"email": null,
"num\u00e9ro_de_t\u00e9l\u00e9phone": null,
"lettre_de_motivation": null,
"cv": null
},
"checksum": "9a5ba168ebea9a10dd85f46efd69efb525956ca50bd6d8abe9f8ff2fcec5bb49"
}
}
in normal case the response is :
{
"effects": {
"html": null,
"dirty": []
},
"serverMemo": {
"data": {
"nom_et_pr\u00e9nom": "dw",
"email": null,
"num\u00e9ro_de_t\u00e9l\u00e9phone": null,
"lettre_de_motivation": null,
"cv": null
},
"checksum": "a58b11b68ad9c0599b0f2a2f0ca66e808003988edf011e663501c39e52235ae3"
}
}
When i restart the docker images it works fine again but after few tries it start again to produce errors.
Additional information
Browser console error :
Uncaught (in promise) SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data at line 1 column 501 of the JSON data
value index.js:75
promise callback*value/< index.js:70
promise callback*value index.js:68
sendMessage index.js:242
value index.js:252
later debounce.js:8
setTimeout handler*debounce/< debounce.js:12
value index.js:225
callback node_initializer.js:94
timeout index.js:552
setTimeout handler*value/< index.js:551
attachModelListener node_initializer.js:98
initialize node_initializer.js:29
initialize node_initializer.js:15
value index.js:92
value index.js:525
walk walk.js:5
walk walk.js:10
walk walk.js:10
walk walk.js:10
walk walk.js:10
walk walk.js:10
walk walk.js:10
walk walk.js:10
walk walk.js:10
value index.js:511
value index.js:90
Component index.js:51
value index.js:88
value index.js:87
<anonymous> demande-f1:510
q alpinejs:1
Wt alpinejs:1
<anonymous> alpinejs:5
VoidFunction* alpinejs:5
<anonymous> alpinejs:5
index.js:75:57
value index.js:75
(Async: promise callback)
value index.js:70
(Async: promise callback)
value index.js:68
sendMessage index.js:242
value index.js:252
later debounce.js:8
(Async: setTimeout handler)
debounce debounce.js:12
value index.js:225
callback node_initializer.js:94
timeout index.js:552
(Async: setTimeout handler)
value index.js:551
(Async: EventListener.handleEvent)
attachModelListener node_initializer.js:98
initialize node_initializer.js:29
forEach self-hosted:203
initialize node_initializer.js:15
value index.js:92
value index.js:525
walk walk.js:5
walk walk.js:10
walk walk.js:10
walk walk.js:10
walk walk.js:10
walk walk.js:10
walk walk.js:10
walk walk.js:10
walk walk.js:10
value index.js:511
value index.js:90
Component index.js:51
value index.js:88
forEach self-hosted:203
value index.js:87
<anonymous> demande-f1:510
q alpinejs:1
Wt alpinejs:1
<anonymous> alpinejs:5
(Async: VoidFunction)
<anonymous> alpinejs:5
<anonymous> alpinejs:5
Request headers
POST /livewire/message/job-apply-demande HTTP/2
Host: www.mywebsite.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/119.0
Accept: text/html, application/xhtml+xml
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://www.mywebsite.com/recrutement/demande-f1
Content-Type: application/json
X-Livewire: true
X-CSRF-TOKEN: vaYXa3w5ZPF7pdiFQSB77CtcCWkTZ9wezQ594zhE
Content-Length: 500
Origin: https://www.mywebsite.com
Connection: keep-alive
Cookie: __gsas=ID=176520282cb9498d:T=1698320691:RT=1698320691:S=ALNI_MavLlz459ROCPQ8ALfvN-AbV_jPXA; pvisitor=268ce322-88cb-419c-91d2-b96fbc29aafd; XSRF-TOKEN=eyJpdiI6Ik51aWh3c0xONW9yMFl0SUpDeWZ5QWc9PSIsInZhbHVlIjoiVlM4alAzQzlpNjR5K2lDSGwzbnBHQW9lVGVHL1NFZ1NzZzRBSlRYaUJoZzBTbEVxUDlsZVFvTjNMMUF6NFRib0duQzVLOXBqTER6REpwUytIVVJ6UU1CVldzeEx5YkhaZ2RkOElxQmNzR2Ztb1NBdXJUemgrRWJkVHpRQmVhbVkiLCJtYWMiOiJhYThiYmE4ZGUzYTExZTA0NjlkZjk1ZDkwOTUyMTFkZjZlOWExODJiYTRmODBhZWYwZWY1NGRiOThlMTBlYTgyIiwidGFnIjoiIn0%3D; myapp_session=eyJpdiI6IjJtWnIrQk85OENEdldTVm9qOVhjeEE9PSIsInZhbHVlIjoiMUhZNmxmUk8wQ1NaSjZwKzM0RENZQ0owWGtzRER1d3FKcTNtUndzQm1rZlhoYnNWMmVSYVQwRUxHa1NhVDJ3STU4ZkJvOENTSkxzU3RZVld2OEJodHVpTER0Ymw3WmFoNW13bTFXYUQ3eU5TdU5HcjVTOVVXMTFCbVlNRWU3bzciLCJtYWMiOiI4NTE3YmI4ZjY0ODcyNTgwNmQxOGE3ZmJiZTM4MDk3ZWU2NmE2ZTFiNzViYmUxOGZkZGUxNzM3Y2I1M2Y4MjQ4IiwidGFnIjoiIn0%3D; 2feKCJz0sdlMyam5IJqMF6XjD2u29xIhgf86cgDG=eyJpdiI6IkUvamwrSDhuMGFBa250UkoyYmFnVGc9PSIsInZhbHVlIjoidnpjRXd3MzViRmhlU1VOSDhWVDNCRnlzTHVqQkdQWmZTb3R1NUZIK1B3bzNQbHRyVk96Q2dPRVp3NUNwbXcrOVgrWDNhSUM0TzN6ZnBtc2Y4YjQ0cVdtQmF3T3hPNVN1d3hDMDJzK3daZGhnUE9iL2hZV04vUlpkUTc4TUd3Uzg5YWRSOTNPNERUd1pwT1FIZzh4OHlZK1ZiRldhQzcyQVVuQ09LVjg1dXFUNldhdWFBTDZzZitKcnhiQmlIcC9rVUZxVlZEd2IzM0htYjlJZFBCMmFDODl6bGpBekpFUW05VzVlUVZ2dk1nV3dlbnNMcFMvZG5rd2pDZFh0Z2RNenpvbGpWNUxndmt0cUhYTU5wZUhxK1M2QzgwamFLVEVmWC9BSHJRMWJSeTREQll4c2h5UTVRQkQxbytqT3dTcUZ4OEtaRW1ucFRMVnUwbmdjTzh2Qzc1VkNnb09YbEp6TkJIQzNWTnhtQlkwRzdnZnN3TU9aeGxDTng3NE0vRGlZY2ZKM3R0YUVTeGYvaEFjcUd4NmRqSGl2SHVJRy96YjZWYXRxd0ZrN1UzWjJWS1E4WjVoV2JkZXFZY0FEMnJCK0pneVhNcGVaeEFiVDYrZVBJU2NvSnl6VHNHUjc5QzRLVWkxN1p4cE4ySHp6bXNSUStvQzNxWTA0SlhqM1UyeUpFVXNRWjQrL0VvMTE5alRtMmJ6RnJQKzJ3Y3JxTWJxQjJaOWtEZ2RNZCtzPSIsIm1hYyI6ImVmMjYwZWY4OWMxNWNlZDI0MGRiNTU4YzBlZTYwYmJkMjY4NzNmNmE0ZTZkZjVkNGE3NzIxMmNlMjJlOWM3MzciLCJ0YWciOiIifQ%3D%3D
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
TE: trailers
Response headers
HTTP/2 200
server: nginx/1.23.3
date: Tue, 14 Nov 2023 17:30:36 GMT
content-type: text/html; charset=UTF-8
x-powered-by: PHP/8.2.12
x-frame-options: SAMEORIGIN
x-content-type-options: nosniff
X-Firefox-Spdy: h2
normal response header when there is no this error :
HTTP/2 200
server: nginx/1.23.3
content-type: application/json
x-powered-by: PHP/8.2.12
cache-control: max-age=0, must-revalidate, no-cache, no-store, private
date: Tue, 14 Nov 2023 17:55:47 GMT
pragma: no-cache
expires: Fri, 01 Jan 1990 00:00:00 GMT
set-cookie: XSRF-TOKEN=eyJpdiI6IkpZUkhvNnM5Vnh3SXhZQWwvVURWT0E9PSIsInZhbHVlIjoiVXVZSHhJdDBxU21odUJsS3krNTVXSUhxNVl2THkwd3J5NTQ1SFc3OG1LbUptcVFpZG9lMExBREIvNHRHemRRZ3NXT0hsaUVxeXFUZTA3d1hzTDBsM0hQalMrc05WdVhiUGpVRlJOMld1N29BRjZVN2cydG5BajQ1dG9JbFNBM0giLCJtYWMiOiI0MjI0MWEwNDkwNTRlN2UwNmQ3YjFiNmMxOTdmNGE1MGRlOWQxNTE5YWExMGYwNTM3ZmU0NjEyZTM4NThlNWFkIiwidGFnIjoiIn0%3D; expires=Tue, 14 Nov 2023 19:55:47 GMT; Max-Age=7200; path=/; samesite=lax
set-cookie: xx_session=eyJpdiI6IkJ0N2FmblJNQnBhbm9WVjU1bkNSa3c9PSIsInZhbHVlIjoiR3dBZUlwN05jS2hQQWs3QzM0cFk1b1BLbzVoSHZiV2trRkdmd0FvU1JVenQ2OFdjQ0NYRUZpbG5aMUdLYzFHekkwa3U1Nkc4WDk1WStNZ2FJbk8zVEx1bGNEMCt2NUdJRGV6TUgyUXBiSFNleXBBTE1vRFZlV0hxeUZ1dmV2dEIiLCJtYWMiOiIwYjcwOTBlZDU0Mjk5YjJjM2Q0MmJkNjI3MDU2MWMxNDdmODUyMDVkM2NjOWUzNzQ3NThlMjUxNzk3NGEwZWQyIiwidGFnIjoiIn0%3D; expires=Tue, 14 Nov 2023 19:55:47 GMT; Max-Age=7200; path=/; httponly; samesite=lax
set-cookie: 2feKCJz0sdlMyam5IJqMF6XjD2u29xIhgf86cgDG=eyJpdiI6IjJtQ2JMQ2doNWNYV0FkQ2RNaXpmUkE9PSIsInZhbHVlIjoiakFoNkJlSzhzTVpyZURqUStqVnF2R05CZC93Q05KVUd6Ly9ZYjdWem9GanNQenJYWlcyUlNndDQ2U2pZVjlaTCtSbHozcTRHWGY1a3N3bDR5K2tXVjNZdnBBYzAzcTdoTUNJNk1xaE94VTJtY25ydVo4ckxUQmhoaHFaQjNtRStESDZiS0dXaVd2YWVQSmd6SE9raXVRRkkyR05qR3I4Nk0xWDhLeVgxVkJ6TDJuSXBjdXFEa2drZjlMcHkvTmZxWTNjQno4WWRBTVR4cHdNZ2lRZkFiTks2eGYrNGVTQzB0TklJZm1YRHJRcXpod3BhYjJuS3ExYThvWlhZZFRmLzBOY2ZNL0Y4cEJWLzVhZFdoVkpZMUtxTE1JS1g0S1U2dmREeWNQd2N3MDdtZm1KS3F6S0NiKzhKTzl4dWtCS3RNMmcrR0l5TklhY0ZEQlhNNnF4TCtPcWhmbWt3ZTdPZnJmWWVjNTFlaE10aGZ3cXN3VjZqWkNJMHU2aTZyQlRpdXFhU1JuV0xxdGFZV29pNFVPRGVoREZtclh6RFpIaDFTQ1RUOWxQbVNxS3lZNzlhMThqd0RMeUtyS04zbENjbDRmV2t2TTBPS1lRTktiZ0g5eXdhZ0JwWmpuSE1EaXpHM0hucUdYSHlBU05zQUNrcFdEazlYQng4eFd6bkdrQnZKVEE4clhweTJxZTFIbTBySzdiZ0JtRmpGZjhwN0kzZEI2MUJXWStGeTZjPSIsIm1hYyI6ImNlNDBkYTc1YmE0NTFiZDViOWM0ZGZjYWM5NDZjNTczZTg3NDg3NDg0NDU5NjViMWQyOTM1YjdlOWFiODIyYmUiLCJ0YWciOiIifQ%3D%3D; expires=Tue, 14 Nov 2023 19:55:47 GMT; Max-Age=7200; path=/; httponly; samesite=lax
x-frame-options: SAMEORIGIN
x-content-type-options: nosniff
X-Firefox-Spdy: h2
Request headers :
POST /livewire/message/job-apply-demande HTTP/2
Host: www.xxxcom
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/119.0
Accept: text/html, application/xhtml+xml
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: https://www.xxxcom/recrutement/demande-f1
Content-Type: application/json
X-Livewire: true
X-CSRF-TOKEN: vaYXa3w5ZPF7pdiFQSB77CtcCWkTZ9wezQ594zhE
Content-Length: 512
Origin: https://www.xxx.com
Connection: keep-alive
Cookie: __gsas=ID=176520282cb9498d:T=1698320691:RT=1698320691:S=ALNI_MavLlz459ROCPQ8ALfvN-AbV_jPXA; pvisitor=268ce322-88cb-419c-91d2-b96fbc29aafd; XSRF-TOKEN=eyJpdiI6IjFodng2a2QxUXcwczBRVUp5dDBONWc9PSIsInZhbHVlIjoiaEkyM0NOLytmUElZVEZJVHBVUm1ZdXJDNGNkK20vT0pjUW9ZbmVVc2NxUjA1a3lhc2R6U29rdyttUTJXVXh2SDlQQXFBYUEwS2tpU3E2S0VUWlZtb25YZmdOSlJEL3NwRUxMQnc1VkRSb01JQ1Jkcm12WnpTNEVwZ240bTNDRUciLCJtYWMiOiJlYjU3OTIzNmU4NDA2ZjRiMzdhMjA1ZjY0YzMxNzBmMWFlOGIzY2JkZWZiOGYxZGQyNDRmYWJlNzlkMTdmODUxIiwidGFnIjoiIn0%3D; xxx_session=eyJpdiI6IjNnUE0zaVBkQkVLS1ZOaE51alNBV3c9PSIsInZhbHVlIjoid3hJWGlKb1h4WkM2Yldpck1TdzhZQklXL3djWU9kSWxXY0VmUjdrQVJDRTFnRUQyOFl0elkvc1FUL2k0dWhlK2xUelBDMlorbm9SSGY2RmErYWhnRFArbzNwNDRlVjJEOU8yMG4zS0p0SmEwcUM3SjN3N1llU3l6NWFlNFYvdGwiLCJtYWMiOiI2ODYxZDVlZWU3NjA0YjYyYWFjNmZlZjk2YzUzMjUwNWU2MjAzNjVkMzc3YjFlMjNiNWI0Zjc1NmQxNmIwNzYxIiwidGFnIjoiIn0%3D; 2feKCJz0sdlMyam5IJqMF6XjD2u29xIhgf86cgDG=eyJpdiI6IkN5aFQ3MllrRkMwdndEYVM2MGlhSVE9PSIsInZhbHVlIjoiUlFrU0Z6M0YwQnhRa2lnNkJBR2pCN3JYY0pJVXJDZEtleTQ2Tk4yMkJzZmZVbS8vZXlFZlRGWldPVUpRVEFVclRmUldTa2IyK2FGVGdtcytmNjRIUXl6YkxUMllyNW83UWtMakloWEdGYnoyQlp2cWo2VlhhVTIxblJjMkhzRVNnM3IwNElYcHFNcE5Mcnp6Q0YxMUtVTGxqcHBjdmduaGZ0L1UwZXN6ZGVFdGZPSkpacHhGMWNqMkZqbXE2MDl6bWltS3NoVjl5T2F1dWVXR2xrMU45RnMyN01aa2xOMHpFMDFmd1ZmS0V5NnZsdXBoMUcxbjlETnlXL2s3VXN2N3ptZVVYaTFtelY2aU1RbndVYmY5bXdPT1pzWWF1d0RvUmRxSll0d29ZdTBTLzNYSXliWHowQkdwZnRzVHhKNmtWOVlBL2NFbzMrOVhleU92ZHNzSExKTjdYNmNHZ1FkWHdvem81cHFPc20xOHBsaFhuTUQ1ODh2VTJ4cWVSV3g1THlMNmpVbkoyMmxyRzlNczdIOWQvQnZ4TStXVVQzKzNkd2FSdWhudXk3Tmt2N2ttakhzc3hxdEU4c2t2b1dXdHhhRWtva2lCaGYwMnhLa0w3T3MreDZNdnRDcWNtV3lvYVEwTXM1bTZzdzBrbThTU2RKYVBnQXc2RHF3QkFUN1RYdzUzaUQvOTB6NFlDNk5UaHpURnpNUFVGZFMySnpvcGJSbDkzeGs3QXI0PSIsIm1hYyI6ImE0YzAzYjc2NjI5NjEwNDZjYjFkYWJlOTYzNjgyMjI5ZmM1NTRiNGEzMDgzNGJiMGM4YmIxNjRlNzFlMmM5NDEiLCJ0YWciOiIifQ%3D%3D
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin