E 'possibile inviare cookie da server di terze parti a browser utilizzando CORS

1

AGGIORNATO DALL'ULTIMA DOMANDA CON ULTERIORI DETTAGLI

Sto costruendo un'app javascript completa dall'API di Salesforce.com senza script lato server che sarà ospitato sul dominio salesforce.com (https)

Questa app dovrebbe essere in grado di garantire l'accesso a più file da salesforce.com a cloudfront utilizzando cookie con firma del cloudfront .

Per fare ciò, ho pensato di creare una funzione aws lambda esposta come servizio web dal gateway API che genererà e restituirà i cookie firmati in un'intestazione HTTP Response all'app js.

Quindi, l'applicazione js di salesforce dovrebbe essere in grado di chiamare questa funzione per recuperare i cookie firmati e reindirizzare l'utente all'URL dei contenuti privati su cloudfront.

Finora, ho creato un bucket s3 + una distribuzione del cloud + funzione lambda collegata a un gateway API. Ma non sono in grado di farli funzionare insieme e di impostare i cookie firmati sul browser a causa della stessa politica sull'origine dei cookie:

  • La funzione che genera il cookie è ospitata su amazonws.com (Funzione Lambda)
  • La funzione che chiama la funzione amazonws.com è ospitata su salesforce.com
  • salesforce.com crea un XHR request utilizzando CORS a amazonws.com per ottenere i cookie richiesti.
  • Per ogni cookie restituito, amazonws.com imposta gli attributi seguenti:
    • domain = cloudfront.net ; percorso = /; sicuro; HttpOnly

Recupero i cookie sul lato client ( salesforce.com ) dal lato server ( amazonws.com ) leggendo l'intestazione XHR HTTP Response .

Ma (e questo è il luogo in cui ho trascorso le ultime 24 ore), i cookie non sono impostati nel cookie store del browser su salesforce.com . Il che significa che non sono disponibili per richiedere risorse a cloudfront.net .

Pensi che potrebbe funzionare se la funzione awda lambda fosse nello stesso dominio di cloudfront.net per servire un cookie con domain = cloudfront.net:

  • awmazonws.com / myfunction diventerebbe cloudfront.net / myfunction

O c'è un altro modo per farlo?

Grazie mille per il tuo supporto!

    
posta Brice 16.08.2018 - 19:29
fonte

1 risposta

1

L'attributo domain di per un cookie non può essere impostato su domini arbitrari. Mentre foo.example.com potrebbe impostare un cookie su example.com , non è possibile impostare un cookie su example.org poiché questo è un dominio non correlato. Da MDN: Set-Cookie: domini non validi :

A cookie belonging to a domain that does not include the origin server should be rejected by the user agent.

Per quanto riguarda come ottenere quello che vuoi: non è chiaro cosa vuoi ottenere in primo luogo. I cookie per cloudfront.com devono essere forniti solo dal server cloudfront.com. Forse stai provando a fare qualcosa con i cookie, ma i cookie non sono stati progettati per.

    
risposta data 16.08.2018 - 19:58
fonte

Leggi altre domande sui tag