To resolve the ‘Maximum recursive updates exceeded’ error in Vue.js, often caused by complex nested validations, the implemented solution involves dividing the validation logic across two distinct components. By avoiding deep nesting, this method simplifies the validation process. Each component (‘First.vue’ and ‘Second.vue’) independently handles its segment of the validation logic using Vuelidate. This separation ensures more manageable and modular code, significantly reducing the risk of triggering recursive update errors that are common in tightly nested validation structures. This approach not only enhances code readability and maintainability but also improves performance by preventing the excessive recursive calls that can occur in deeply nested validation scenarios.
Solving Vue 3 Axios CSRF Token Mismatch with Laravel API
While working with Vue 3 and Laravel APIs, a common issue you might encounter is the “CSRF Token Mismatch” error. This problem arises when Axios, a popular HTTP client for making requests, fails to send the necessary X-XSRF-TOKEN
in the request header. This article explains how to resolve this issue by intercepting requests and adding the required token.
Understanding the Problem
The Cross-Site Request Forgery (CSRF) Token Mismatch error typically occurs when a request is made from a local domain to a Laravel API. Laravel expects a CSRF token as a part of the request for security purposes. However, when Axios does not include this token in the header, Laravel rejects the request, leading to an error.
The Solution: Intercepting Requests with Axios
The solution lies in modifying the request before it’s sent. By using Axios’ request interceptors, you can ensure that the X-XSRF-TOKEN
is included in every request header. Below is a step-by-step guide on how to implement this.
1. Setting Up Axios Instance
First, create an Axios instance with the necessary configurations:
import axios from 'axios';
import Cookies from 'js-cookie';
const httpApi = axios.create({
baseURL: process.env.VUE_APP_API_URL,
withCredentials: true,
headers: {
"X-Requested-With": "XMLHttpRequest",
},
});
Here, withCredentials: true
is crucial for sending cookies in cross-origin requests.
2. Adding a Request Interceptor
Next, add a request interceptor to Axios:
httpApi.interceptors.request.use(function (config) {
const token = Cookies.get('XSRF-TOKEN');
if (token) {
config.headers['X-XSRF-TOKEN'] = token;
}
return config;
}, function (error) {
return Promise.reject(error);
});
This interceptor function runs before each request is sent. It retrieves the CSRF token from the cookies using js-cookie
and adds it to the request headers.
3. Exporting the Configured Axios Instance
Finally, export the configured Axios instance for use in your Vue components:
export { httpApi };
Conclusion
By intercepting requests and adding the X-XSRF-TOKEN
header, you can smoothly integrate Vue 3 with a Laravel API without encountering CSRF Token Mismatch errors. This approach enhances the security of your application while ensuring seamless communication between the client and server.
VS Code Path Intellisense config for JavaScript
Edit/Add jsconfig.json
{ "compilerOptions": { "baseUrl": ".", "paths": { "@/*": ["src/*"] } }, "exclude": ["node_modules", "dist"], "include": ["src/**/*.vue", "src/**/*.js"] }
Edit VS Code settings.json and add
"typescript.suggest.paths": false,
"javascript.suggest.paths": false
How to save a Facebook video
- Find a video that you want to save.
- Click in the URL field.
- Replace the “www” with “mbasic.” and press Enter
- Click play video
- A new browser window will open
- Click on the 3 dots and Download video
How to enable nginx stub status
How to enable nginx stub status
Edit nginx.conf add in the server { ….. } block/context
location /nginx_status { # Turn on nginx stats stub_status on; # I do not need logs for stats access_log off; # Security: Only allow access from your IP address # allow your ip address; # Send rest of the world to /dev/null # deny all; }
For Plesk edit /etc/nginx/plesk.conf.d/server.conf
Could not open archive dir for / Could not open archive mbox dir
/usr/local/cpanel/scripts/update_mailman_cache
How to fix the errors
Could not open archive mbox dir for somelist: No such file or directory at /usr/local/cpanel/Cpanel/Mailman/DiskUsage.pm Could not open archive dir for somelist: No such file or directory at /usr/local/cpanel/Cpanel/Mailman/DiskUsage.pm
Solution
If we have a list named list1_webinformat.com the error is
Could not open archive mbox dir for list1_webinformat.com: No such file or directory at /usr/local/cpanel/Cpanel/Mailman/DiskUsage.pm
and we have to create 2 dirs
mkdir /usr/local/cpanel/3rdparty/mailman/archives/private/list1_webinformat.com.mbox
mkdir /usr/local/cpanel/3rdparty/mailman/archives/private/list1_webinformat.com
After we create the needed directories we run 2 commands
/usr/local/cpanel/scripts/fixmailman /scripts/update_mailman_cache
Let me know in comments if you need any help or if this helped you.
Happy coding 😉
cPanel/WHM The system cannot determine the base domain
WHM error: The system cannot determine the base domain (domain name)
Solution : run /scripts/upcp –force
Hot link protection
Simple hot link protection using .htaccess
RewriteEngine on #RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{REQUEST_FILENAME} -f RewriteCond %{REQUEST_FILENAME} \.(gif|jpe?g?|png)$ [NC] RewriteCond %{HTTP_REFERER} !^https?://([^.]+\.)?your-domain\. [NC] RewriteCond %{HTTP_REFERER} !^https?://([^.]+\.)?google\. [NC] RewriteRule \.(gif|jpe?g?|png|bmp)$ http://your-domain/hotlinkdenied [R,L]
- Replace your-domain with your actual domain name
- Replace http://your-domain/hotlinkdenied with a valid url
How to fix no talloc stackframe at ../source3/param/loadparm.c:4864, leaking memory
sudo apt-get remove libpam-smbpass
or
pam-auth-update
and remove “SMB password synchronization”
Ubuntu 12.04 – service mysql start start: Job failed to start
Recently after a backup restore MySql server failed to start with the following error message:
start: Job failed to start
To fix start: Job failed to start I had to re-install the MySQL server.
I hope you have a backup of your data because you will lose all your MySQL data running the following commands