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
utilizzandoCORS
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!