Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Politica POST
La politica richiesta per effettuare richieste autenticate tramite HTTP POST è un UTF-8 documento con codifica base64 scritto in JavaScript Object Notation (JSON) che specifica le condizioni che la richiesta deve soddisfare. A seconda di come si progetta il documento di policy, è possibile controllare la granularità dell'accesso per caricamento, per utente, per tutti i caricamenti o in base ad altri design che soddisfano le proprie esigenze.
Questa sezione descrive la politica POST. Ad esempio, i calcoli delle firme utilizzando la politica POST, vedereEsempio: Browser-Based caricamento tramite HTTP POST (utilizzando AWS Signature (versione 4).
Nota
Sebbene il documento sulla politica sia facoltativo, ti consigliamo vivamente di utilizzarne uno per controllare cosa è consentito nella richiesta. Se rendi il bucket scrivibile pubblicamente, non hai alcun controllo su quali utenti possono scrivere nel tuo bucket.
Di seguito è riportato un esempio di documento di policy POST.
{ "expiration": "2007-12-01T12:00:00.000Z", "conditions": [ {"acl": "public-read" }, {"bucket": "johnsmith" }, ["starts-with", "$key", "user/eric/"], ] }
La politica POST contiene sempre conditions gli elementi expiration and. La politica di esempio utilizza due tipi di corrispondenza delle condizioni (corrispondenza esatta e corrispondenza iniziale). Le sezioni seguenti descrivono questi elementi.
Scadenza
L'expirationelemento specifica la data e l'ora di scadenza della politica POST nel formato di data GMT ISO8601. Ad esempio, 2013-08-01T12:00:00.000Z specifica che la politica POST non è valida dopo la mezzanotte GMT del 1° agosto 2013.
Corrispondenza delle condizioni
Di seguito è riportata una tabella che descrive i tipi di corrispondenza delle condizioni che è possibile utilizzare per specificare le condizioni della politica POST (descritti nella sezione successiva). Sebbene sia necessario specificare almeno una condizione per ogni campo del modulo specificato nel modulo, è possibile creare criteri di corrispondenza più complessi specificando più condizioni per un campo modulo.
| Tipo di corrispondenza delle condizioni | Description |
|---|---|
|
Corrispondenze esatte |
Il valore del campo del modulo deve corrispondere al valore specificato. Questo esempio indica che l'ACL deve essere impostata su public-read:
Questo esempio rappresenta un modo alternativo per indicare che l'ACL deve essere impostata su public-read:
|
|
Inizia con |
Il valore deve iniziare con il valore specificato. Questo esempio indica che la chiave dell'oggetto deve iniziare con user/user1:
|
|
Content-Types Corrispondenza in un Comma-Separated elenco |
Content-Types i valori per una
Il valore seguente soddisferebbe la condizione:
Il valore seguente non soddisferebbe la condizione:
NotaGli elementi di dati diversi da quelli |
|
Corrispondenza di qualsiasi contenuto |
Per configurare la politica POST in modo da consentire qualsiasi contenuto all'interno di un campo del modulo, utilizzala
|
|
Specifica degli intervalli |
Per i campi del modulo che accettano un intervallo, separa il limite superiore e inferiore con una virgola. Questo esempio consente una dimensione del file compresa tra 1 e 10 MiB:
|
Le condizioni specifiche supportate in una politica POST sono descritte inCondizioni.
Condizioni
conditionsIn una policy POST c'è una serie di oggetti, ognuno dei quali viene utilizzato per convalidare la richiesta. È possibile utilizzare queste condizioni per limitare ciò che è consentito nella richiesta. Ad esempio, le condizioni politiche precedenti richiedono quanto segue:
-
La richiesta deve specificare il nome del
johnsmithbucket. -
Il nome della chiave dell'oggetto deve avere il
user/ericprefisso. -
L'ACL dell'oggetto deve essere impostato su.
public-read
Ogni campo del modulo specificato in un modulo (ad eccezione dix-amz-signature, filepolicy, e i nomi di campo con un x-ignore- prefisso) deve apparire nell'elenco delle condizioni.
Nota
Tutte le variabili all'interno del modulo vengono espanse prima della convalida della politica POST. Pertanto, tutte le condizioni che corrispondono devono corrispondere ai campi del modulo espanso. Supponiamo di voler limitare il nome della chiave dell'oggetto a un prefisso specifico ()user/user1. In questo caso, impostate il campo del modulo chiave su. user/user1/${filename} La tua politica POST dovrebbe essere [
"starts-with", "$key", "user/user1/" ] (non inserire[
"starts-with", "$key", "user/user1/${filename}" ]). Per ulteriori informazioni, consulta Corrispondenza delle condizioni.
Le condizioni del documento politico sono descritte nella tabella seguente.
| Nome elemento | Description |
|---|---|
acl |
Specifica il valore ACL che deve essere utilizzato nell'invio del modulo. Questa condizione supporta la corrispondenza esatta e il tipo di corrispondenza |
bucket |
Specifica il nome del bucket accettabile. Questa condizione supporta il tipo di corrispondenza esatta della condizione. |
content-length-range |
Le dimensioni minime e massime consentite per il contenuto caricato. Questa condizione supporta il tipo di corrispondenza |
Cache-Control
|
REST-specific intestazioni. Per ulteriori informazioni, consulta POST Object. Questa condizione supporta la corrispondenza esatta e il tipo di corrispondenza |
key |
Il nome della chiave accettabile o il prefisso dell'oggetto caricato. Questa condizione supporta la corrispondenza esatta e il tipo di corrispondenza |
success_action_redirect
|
L'URL a cui viene reindirizzato il client dopo il corretto caricamento. Questa condizione supporta la corrispondenza esatta e il tipo di corrispondenza |
success_action_status |
Il codice di stato restituito al client in caso di caricamento riuscito, se non Questa condizione supporta una corrispondenza esatta. |
x-amz-algorithm |
L'algoritmo di firma che deve essere utilizzato durante il calcolo della firma. Per la versione 4 di AWS Signature, il valore è Questa condizione supporta una corrispondenza esatta. |
x-amz-credential |
Le credenziali utilizzate per calcolare la firma. Fornisce l'ID della chiave di accesso e le informazioni sull'ambito che identificano l'area e il servizio per i quali la firma è valida. Dovrebbe essere lo stesso ambito utilizzato nel calcolo della chiave di firma per il calcolo della firma. È una stringa del seguente formato:
Ad esempio:
Per Amazon S3, la stringa aws-service è. Questa condizione supporta una corrispondenza esatta. |
x-amz-date |
Il valore della data specificato nella stringa in formato ISO8601. Ad esempio, Ciò è necessario se nella richiesta è incluso un documento relativo alla politica POST. Questa condizione supporta una corrispondenza esatta. |
x-amz-security-token |
Token DevPay di sicurezza Amazon. Ogni richiesta che utilizza Amazon DevPay richiede due campi del Per ulteriori informazioni su Amazon DevPay, consulta Using DevPay in the Amazon Simple Storage Service User Guide. |
x-amz-meta-* |
User-specified metadati. Questa condizione supporta la corrispondenza esatta e il tipo di corrispondenza |
x-amz-* |
Vedi POST Object () POST Object per altre Questa condizione supporta una corrispondenza esatta. |
Nota
Se il tuo toolkit aggiunge altri campi modulo (ad esempio, Flash aggiungefilename), devi aggiungerli al documento sulla politica POST. Se puoi controllare questa funzionalità, aggiungi il prefisso x-ignore- al campo in modo che Amazon S3 ignori la funzionalità e non ne alteri le versioni future.
Utilizzo di escape con caratteri
I caratteri che devono essere evitati all'interno di un documento di policy POST sono descritti nella tabella seguente.
| Sequenza di escape | Descrizione |
|---|---|
|
\\ |
Barra rovesciata |
|
\$ |
Simbolo del dollaro |
|
\b |
Backspace |
|
\f |
Avanzamento modulo |
|
\n |
Nuova riga |
|
\r |
Ritorno a capo |
|
\t |
Tabulatore orizzontale |
|
\v |
Tabulatore verticale |
|
\ u |
Tutti i caratteri Unicode |
Ora che conosci i moduli e le politiche e hai capito come funziona la firma, puoi provare un esempio di caricamento POST. È necessario scrivere il codice per calcolare la firma. L'esempio fornisce un modulo di esempio e una politica POST che puoi utilizzare per testare i calcoli della firma. Per ulteriori informazioni, consulta Esempio: Browser-Based caricamento tramite HTTP POST (utilizzando AWS Signature (versione 4).