Meritt Iniziare

Tutte le piattaforme

Il tracciamento di affiliazione dentro la sua applicazione

Se il suo sito è un'applicazione, la regola può viverci dentro: una route sul suo prefisso di tracciamento che ci inoltra la richiesta e restituisce la risposta. Tre dettagli separano una route che traccia da una che ne ha solo l'aria: accettare GET e POST, conservare la query string e non richiedere un token CSRF.

Next.js

Dove: next.config.js

Una voce in rewrites() di next.config.js. Next.js non rimuove le intestazioni: i cookie dei suoi visitatori ci arrivano, e non li leggiamo.

Nuxt

Dove: nuxt.config.ts

Una regola routeRules con proxy in nuxt.config.ts. Come Next.js, Nuxt non rimuove le intestazioni della richiesta inoltrata.

Express

Dove: app.js

Una route app.all in app.js: inoltra con https.request usando req.originalUrl, mai il solo token, perché la query string porta l'identificativo del clic. Restituisce il cookie impostato e il reindirizzamento.

Node (standalone proxy)

Dove: server.js

Per un sito senza server applicativo: un piccolo proxy Node in due file, server.js e package.json, avviato con npm start. Usa https.request e mai fetch, che sovrascrive le intestazioni Sec-Fetch: ogni visitatore sembrerebbe una macchina e ogni clic verrebbe scartato.

ASP.NET Core

Dove: Program.cs

Un MapMethods GET e POST in Program.cs: la richiesta viene inoltrata con intestazioni e query string tramite un client di IHttpClientFactory, e la risposta restituisce il cookie e il reindirizzamento.

Laravel

Dove: routes/web.php

Una route Route::match GET e POST in routes/web.php, più un'eccezione CSRF in bootstrap/app.php: il tag invia senza token, e senza l'eccezione Laravel risponde 419. La query string viene inoltrata grezza, perché getQueryString() la riordina.

Ruby on Rails

Dove: config/routes.rb, più un controller

Una route GET e POST in config/routes.rb e un controller MerittController con skip_forgery_protection, per lo stesso motivo di Laravel: il tag segnala con sendBeacon, senza token.

Django

Dove: urls.py, più una vista

Due passaggi: la route in urls.py, poi la vista in views.py, marcata @csrf_exempt (altrimenti Django rifiuta prima della vista), che inoltra con requests senza seguire i reindirizzamenti.

Domande frequenti

Perché accettare POST?

Il tag segnala il clic con sendBeacon, che invia un POST. Una route che accetta solo GET lascia passare il reindirizzamento e perde quel segnale.

Perché conservare la query string così com'è?

Porta l'identificativo del clic. Un metodo che la riordina o la ricodifica può perderlo.

Dopo aver aggiunto la route?

Riavvii l'applicazione, rifaccia il deploy, poi avvii la verifica in Meritt.

E poi

Gratuito fino alla sua prima commissione. Nessuna carta richiesta.