Salesforce

Gestione cookie lato client

« Go Back
Information
Gestione cookie lato client
UUID-518074a1-a6da-81c3-be52-bae7685d9c94
Article Content

[en] Cookie blocking is a crucial step for successful Cookie Consent implementation. When the OneTrust banner is integrated with a website, users can opt-in or opt-out of certain categories of cookies. But without necessary blocking mechanism in place, these choices might not be respected.

[en] To maintain compliance and ensure cookies are fired based on visitor preferences, it is necessary to have appropriate cookie blocking methods implemented when the OneTrust Banner is integrated.

I cookie non possono essere bloccati direttamente; tuttavia, la maggior parte dei cookie previsti dalla legislazione è impostata tramite script o tag inseriti, come JavaScript o iFrame HTML. Ciò include la maggior parte dei cookie di analisi e di terze parti, ad esempio i cookie pubblicitari.

Pertanto, per garantire la conformità alla legge, tali script dovrebbero essere bloccati o sostituiti con alternative non basate su cookie ogni volta che il consenso è stato negato o revocato.

A tale scopo, è possibile utilizzare uno dei diversi metodi di supporto JavaScript personalizzati insieme a una funzione di controllo wrapper.

Nota

Questo articolo tratta solo il codice JavaScript. Per informazioni sul blocco del codice iFrame, consultare Riscrittura manuale degli iframe in Conformità cookie.

Riscrittura del tipo JavaScript

Si tratta di uno dei metodi più efficaci per impedire che i cookie controllati dai tag di script vengano impostati senza consenso. Questo metodo prevede un numero minimo di modifiche al sito e non richiede l'utilizzo del wrapper (illustrato di seguito).

Importante

Si consiglia di utilizzare questo approccio quando possibile.

[en] Below are a couple examples in which this method would be applicable.

[en] In-Line Scripting Example:

<script type=’text/javascript’>
document.cookie = “targeting-cookie”+”=”+”1234”
</script>

[en] JavaScript File Example:

<script type=’text/javascript’ src=’/path/cookie.js’></script>

[en] How to Implement

Tag di script normali hanno un aspetto simile al seguente:

<script type="text/javascript">
code
</script>

Quando si utilizza la riscrittura del tipo di script, è necessario modificare gli script in:

<script type="text/plain" class="optanon-category-C0002">
code
</script>

Il numero dell'identificatore di classe corrisponde all'ID del gruppo di cookie caricato dallo script. In questo caso, si tratta di cookie prestazionali.

[en] How it Works

Quando il codice indicato sopra viene caricato, il JavaScript all'interno dei tag non viene eseguito e i cookie non vengono impostati. Quindi, quando il codice di Conformità cookie viene caricato, se per i cookie relativi al gruppo associato è stato fornito il consenso, il tag verrà modificato in modo dinamico in: script type=text/JavaScript e il codice all'interno dei tag verrà riconosciuto ed eseguito normalmente.

<script type=’text/plain’ class=’optanon-category-C0004’>
document.cookie = “targeting-cookie”+”=”+”1234”
</script>

[en] After re-writing this tag, the script would only fire on the site when a user consents to the C0004 category (Targeting Cookies). The class attribute is responsible for updating the type. When consent is withdrawn/withheld for the assigned category, the type will be text/plain; when consent is given, it will be text/javascript.

[en] In this example, when a user does not consent to Targeting cookies (C0004) , the script tag would appear as follows:

client_side_1_pc.png

[en] When a user consents to Targeting cookies (C0004), the type will appear as follows:

client_side_2_PC.png

Nota

È possibile bloccare più categorie di cookie con questo metodo utilizzando la seguente sintassi:

<script type="text/plain" class="optanon-category-C0002-C0003-C0004">
code
</script>

I valori nella frase class="optanon-category-#-#-#" corrispondono alle categorie di cookie impostate nell'elenco dei cookie per il sito. 

Quando si includono più categorie utilizzando questo metodo, le categorie vengono bloccate contemporaneamente. Nessuno dei cookie in queste categorie verrà impostato, a meno che il visitatore del sito non offra il proprio consenso a tutte le categorie che vengono bloccate.

Controllo del wrapper Optanon

Il wrapper Optanon viene fornito nel tag di script principale e ha un aspetto simile al seguente:

<script type="text/javascript">
function OptanonWrapper() {
}
</script>

Svolge la funzione di contenitore dei metodi di supporto utilizzati per bloccare o controllare gli script o i tag html responsabili dell'impostazione dei cookie. Il wrapper viene eseguito ad ogni caricamento di pagina o ogni volta che l'utente salva le modifiche alle impostazioni privacy nel centro preferenze.

Quando i gruppi di cookie vengono impostati da inattivi ad attivi, vengono eseguiti i relativi metodi di supporto e nella pagina viene inserito il corrispondente codice JavaScript/HTML.

Gli script del metodo di supporto non devono essere inseriti all'interno del controllo wrapper. Tuttavia, in caso contrario, vengono eseguiti solo al primo caricamento della pagina. Se si desidera che un'azione di opt in (attivazione) venga applicata immediatamente all'esperienza utente, è necessario utilizzare il wrapper.

Le modifiche apportate all'esperienza utente in seguito a un'azione di opt out (disattivazione) diventeranno effettive solo al momento dell'aggiornamento della pagina o della navigazione verso una nuova pagina.

[en] Below is an example function called through OptanonWrapper():

[en] Example function:

toConsole() {
    console.log(“SUCCESS”)
}
function OptanonWrapper{
  if(OnetrustActiveGroups.includes("C0002")){
    toConsole()
  }
}

[en] OnetrustActiveGroups plays a critical role in the Optanon Wrapper Control method. OnetrustActiveGroups is a data layer variable that gets updated every time a user modifies their choices with the latest category IDs. For more details on this variable, see OnetrustActiveGroups - utilizzo dell'oggetto livello di dati.

[en] In the above instance, toConsole() is an example function that is writing a message on the console when the if condition is executed. In this example, the if condition is checking for the OnetrustActiveGroups data layer variable and if it includes the C0002 category, meaning when Performance cookies are active. Whenever this condition is satisfied, the toConsole() function is executed. The toConsole() function will be called every time the OptanonWrapper() fires and when a user consents to Performance cookies (C0002).

[en] When the function is executed based on consent for Performance category, it appears as follows:

client_side_3_pc.png

Nota

[en] The toConsole() function written above is strictly an example. Make sure to implement this method if there are any existing functions on the website that are required to be controlled based on consent.

[en] SDK-Specific Actions

[en] Third-party tools often have public methods that can be called to indicate to the tool that a user has granted or revoked consent. These will often result in the technology being set to “strict” or “restricted” mode so that a restricted amount of data is processed to respect a user’s choices. If the technology you want to control has these methods, you can implement them through the OptanonWrapper control. See the following example:

function OptanonWrapper(){
        if(OnetrustActiveGroups.includes(“C0002”)){
                myAnalyticsTool.setUnrestrictedMode () //consent given, operate regularly
        }else{
                myAnalyticsTool.setRestrictedMode() //consent not given, operate in restricted mode
        }
}

[en] Events

[en] The OneTrust JavaScript SDK raises several events that can be used to trigger consent-related actions. The two most relevant events are OneTrustGroupsUpdated, which fires when consent becomes available on page load and whenever consent is changed, and OTConsentApplied, which only fires when an explicit consent action has been taken.

window.addEventListener(“OneTrustGroupsUpdated”, event => {
        if(event.details.includes(“C0002”)){
                myAnalyticsTool.setUnrestrictedMode();
}else{
        myAnalyticsTool.setRestrictedMode();
}
})

Nota

[en] When using this method, it’s important to ensure that the third-party technology remains uninitialized or is operating in restricted mode until consent becomes available. Otherwise, it’s possible that data collection is occurring for 1-2 seconds before the third party is told to operate in restricted mode.

[en] For more information on OneTrust JavaScript events, see [en] Cookie Consent Java Script Events Guide.

Metodi di supporto

I metodi di supporto vengono utilizzati per bloccare o controllare gli script o i tag html responsabili dell'impostazione dei cookie.

Nota

Optanon e OneTrust possono essere utilizzati in modo intercambiabile. Tuttavia, si consiglia di utilizzare OneTrust.

OneTrust.InsertScript

Con questo metodo, gli script responsabili dell'impostazione dei cookie vengono inclusi in un file esterno e inseriti dinamicamente nella pagina quando il gruppo di cookie a cui sono associati è attivo.

Il formato è:

OneTrust.InsertScript(url, selector, callback, options, groupId)

Esempio 1. OneTrust.InsertScript

OneTrust.InsertScript('/gaCookies.js', 'head', null, null, 'C0002');OneTrust.InsertScript('/performance-cookies-script.js', 'head', null, null, '2');

[en] In the example below, gaCookies.js is an external file that is setting Google Analytics cookies. This JavaScript file will be inserted only when Performance cookies are active. Implementing this using the InsertScript method within the OptanonWrapper() function would appear as follows:

function OptanonWrapper() { 
            OneTrust.InsertScript('path/gaCookies.js','head', null, null, 'C0002');
 }

Il risultato:

[en] In this example, the gaCookies.js file will get injected before the closing head tag of the HTML when Performance cookies (C0002) are active. The following script will be inserted in the source and will be executed as a regular JavaScript file:

<script type="text/javascript" src="path/gaCookies.js"></script>
client_side_4_insertscript.png

Se il gruppo dei cookie prestazionali con ID di 2 è impostato su attivo o sempre attivo, il seguente script viene inserito nella pagina immediatamente prima del tag head di chiusura:

Nota

[en] Please note that the gaCookies.js used in the scenario above is strictly an example. This method is applicable to any JavaScript file that is required to be injected in the code based on user consent.

Vedere la tabella seguente per una spiegazione dei diversi parametri.

Parametro

Tipo di dati

Descrizione

Valore

Obbligatorio

url

String

URL assoluto o relativo del file JS

selector

String

Selettore di elementi HTML padre in cui verrà inserito il tag dello script

head

body

parent id

callback

Funzione

Una funzione JavaScript che va chiamata una volta inserito il tag dello script

function name

null

options

Oggetto

Un elenco di comportamenti per quando viene inserito il tag dello script

Vedere la definizione delle opzioni riportata di seguito

groupId

Numero

ID del gruppo per il quale verrà inserito il tag dello script

ID del gruppo Optanon

OneTrust.InsertHTML

Questo metodo deve essere utilizzato quando il codice che controlla l'impostazione dei cookie è un tag HTML standard o personalizzato.

Il formato è:

OneTrust.InsertHtml(element, selector, callback, options, groupId)

Esempio 2. OneTrust.InsertHTML

OneTrust.InsertHtml('<iframe type="text/html" width="640" height="360" frameborder="no" src="https://www.youtube.com/embed/v=GEH-usLSwqE"></iframe>','123', null, null, 'C0003');OneTrust.InsertHtml('<customElement customAttribute="value">some content</customElement>', 'parent_element_id', null, null, '3');

[en] In this example, the iFrame is the standard HTML element to be injected in a section that has ID 123. The first null value specifies that there is not a callback function and the second null value specifies that there is no options parameter added. The group ID (C0003) will allow the element to be inserted when consent is granted for Functional-category cookies.

Il risultato:

client_side_5_inserthtml.png

Nota

[en] Please note that this method will automatically add an enclosing div around the element that is getting inserted.

<customElement customAttribute="value">some content</customElement>

Se il gruppo dei cookie di funzionalità è inattivo, lo script non viene inserito.

Vedere la tabella seguente per una spiegazione dei diversi parametri.

Parametro

Tipo di dati

Descrizione

Valore

Obbligatorio

element

String

Tag HTML da inserire

selector

String

ID dell'elemento HTML padre in cui verrà inserito l'elemento

parent id

callback

Funzione

Una funzione JavaScript che va chiamata una volta inserito l'elemento

function name

null

options

Oggetto

Un elenco di comportamenti per quando viene inserito l'elemento

Vedere la definizione delle opzioni riportata di seguito

null

groupId

Numero

ID del gruppo per il quale verrà inserito l'elemento

ID del gruppo Optanon

Nota

Alcuni componenti di terze parti che impostano i cookie utilizzano sia elementi JavaScript che HTML, che sono interdipendenti. Nella maggior parte dei casi, sarà quindi necessario utilizzare in coppia i metodi di supporto HTML e JavaScript per evitare problemi dovuti alla presenza di un elemento e all'assenza dell'altro.

Il parametro Opzioni

Con entrambi i metodi descritti in precedenza, il parametro Opzioni fornisce un metodo per manipolare ulteriormente il contenuto della pagina in base al fatto che sia stato fornito o meno il consenso per un gruppo di cookie. Ciò costituisce un meccanismo semplice che permette ai proprietari di siti Web di incentivare l'opt in o di offrire un'esperienza utente diversa ai visitatori che scelgono l'opt out.

Il parametro può contenere alcuni o tutti i seguenti elementi:

{
deleteSelectorContent: <bool>,
makeSelectorVisible: <bool>,
makeElementsVisible: [‘<id>’, ‘<id>’, ‘<id>’, ...],
deleteElements: [‘<id>’, ‘<id>’, ‘<id>’, ...]
}

La tabella seguente descrive i comportamenti per ciascuna opzione.

Opzione

Tipo di dati

Descrizione

Valore

Obbligatorio

deleteSelectorContent

Boolean

Eliminare tutto il contenuto del contenitore padre prima di inserire l'elemento.

vero

falso

No

makeSelectorVisible

Boolean

Mostra l'elemento contenitore padre dopo l'inserimento dell'elemento.

vero

falso

No

makeElementsVisible

Matrice

Un elenco di ID dell'elemento HTML da mostrare dopo l'inserimento dell'elemento.

[ID, ID]

No

deleteElements

Matrice

Un elenco di ID dell'elemento HTML da eliminare dopo l'inserimento dell'elemento.

[ID, ID]

No

[en] Below are examples for each of these options:

  • [en] deleteSelectorContent

    [en] One of the use-cases for this option is to replace content with script.

    function OptanonWrapper() {
                  let options = { deleteSelectorContent: true
                  }
                 OneTrust.InsertScript('path/gaCookies.js', 'div1', null, options, 'C0003');
                 }

    [en] In the above snippet, OneTrust.InsertScript is utilized to inject gaCookies.js in the parent element with ID div1. Since deleteSelectorContent is set to true, the content of the div1 element will be removed and gaCookies.js will be inserted when a user consents to Functional cookies.

    [en] Results:

    • [en] When functional cookies are inactive:

      delete_selector_content_1.png
    • [en] When functional cookies are active:

      delete_selecor_content_2.png
  • [en] makeSelectorVisible

    [en] This option is applicable when a user has to first consent to a certain category to view the content of an element. To use this option, the prerequisite is for the parent element to be hidden.

    function OptanonWrapper() {
            let options = {
              makeSelectorVisible: true
            }
            OneTrust.InsertScript('path/gaCookies.js', 'div1', null, options, 'C0003');
          }

    [en] In the above example, if the div1 element is hidden initially, then display: block will be added for that element. When Functional cookies are toggled off, the div1 element will not be visible. When a user consents to the Functional category, gaCookies.js will be inserted and the element will become visible since makeSelectorVisible is set to true.

    [en] Results:

    • [en] When functional cookies are inactive:

      make_selector_visible_1.png
    • [en] When functional cookies are active:

      make_selector_visible_2.png
  • [en] makeElementsVisible

    [en] This option is useful when there are multiple elements that are required to be made visible on consent along with script insertion.

    function OptanonWrapper() {
            let options = {
                            makeElementsVisible: ['div2','div3']
                    }
                    OneTrust.InsertScript('path/gaCookies.js', 'div1', null, options, 'C0003');
            }

    [en] In the above example, the OneTrust.InsertScript will insert gaCookies.js in the HTML element with ID div1 when a user consents to Functional cookies. Additionally, because the makeElementsVisible parameter is added, the elements in its array (div2 and div3) will be made visible if they were hidden initially.

    [en] Results:

    • [en] When functional cookies are inactive:

      make_elements_visible_1.png
    • [en] When functional cookies are active:

      make_elements_visible_2.png
  • [en] deleteElements

    [en] This is useful in a scenario when multiple elements are required to be deleted once consent is given. Similar to makeElementsVisible, this option is also taken in array as a value.

    function OptanonWrapper() {
                    let options = {
                    deleteElements: ['div2','div3']
                    }
                    OneTrust.InsertScript('path/gaCookies.js', 'div1', null, options, 'C0003');
            }

    [en] In the above example, when a user consents to Functional cookies, the gaCookies.js will be inserted in div1. Because the deleteElements parameter is added, the div2 and div3 elements will be deleted.

    [en] Results:

    • [en] When functional cookies are inactive:

      delete_elements_1.png
    • [en] When functional cookies are active:

      delete_elements_2.png

Nota

  • Gli elementi HTML verranno sempre inseriti prima del tag di chiusura dell'elemento padre.

  • L'impostazione di makeSelectorVisible richiede che inizialmente l'elemento padre venga nascosto manualmente.

  • Tutti gli elementi HTML specificati nell'elenco degli ID per makeElementsVisible devono essere inizialmente nascosti manualmente.

  • deleteSelectorContent eliminerà solo il contenuto dell'elemento contenitore.

  • deleteElements eliminerà completamente ogni elemento specificato.

  • L'utilizzo del selettore per specificare un elemento diverso da head o body richiede il valore dell'ID dell'elemento padre.

  • [en] The Options parameter can be used with both the Wrapper Control methods – InsertScript and InsertHtml

 
Article Visibility
199,536
Translation
Italian
Not Checked

Powered by