Attualmente ho una funzione POST che funziona tramite API Gateway e Lambda a cui si accede da un client Angolare con CORS. Anche se non so quale sia la tua configurazione, posso condividere tutte le mie impostazioni pertinenti nella speranza che tu possa trovare qualcosa che ti è sfuggito. Abilitare CORS è un bel problema al momento (e si spera che qualcosa stia lavorando su Amazon) richiedendo molti piccoli passi in molte aree con una documentazione piuttosto scarsa.
ho 2 metodi (opzioni e POST) per la mia risorsa e io condividere le impostazioni rilevanti per ogni:
POST:
metodo di richiesta: Niente di speciale. Nel caso del mio endpoint, ho un'opzione in Percorsi di richiesta per uno dei miei parametri di percorso. Non sto usando una stringa di query, quindi la stringa di query URL è vuota. Anche le intestazioni delle richieste HTTP sono vuote.
Integrazione Richiesta:
integrazione Tipo: modelli Lambda Mapping: ho una (application/json) con un modello di passare i valori appropriati del corpo della richiesta e parametri di percorso per la mia funzione lambda.
Risposta del metodo:
Espandere il campo del codice di stato 200. Aggiungi un'intestazione per "Access-Control-Allow-Origin" e fai clic sul pulsante con il segno di spunta per salvarlo. Potrebbe essere necessario farlo per qualsiasi altro codice di stato che potresti avere.
Risposta di integrazione:
Espandere il campo di stato 200 risposte. In Mappature dell'intestazione, modificare il valore di mappatura per contenere '*'. Sono richieste le virgolette singole. Potrebbe essere necessario farlo per eventuali altre risposte di integrazione che potresti avere.
OPZIONI:
metodo di richiesta:
Niente di speciale, proprio come il metodo POST.
Richiesta di integrazione:
L'ho impostato per simulare l'integrazione. Secondo Amazon, non importa, quindi l'ho appena impostato per deridere perché tutto ciò che dobbiamo veramente fare è rispondere 200 con le intestazioni appropriate. Nessun modello di mappatura.
Risposta del metodo:
Espandere il campo del codice di stato 200. Aggiungere le seguenti 3 intestazioni di risposta e salvarle con la casella di controllo: Access-Control-Allow-Headers, Access-Control-Allow-Methods, Access-Control-Allow-Origin. Non ci sono altri codici di stato presenti.
Risposta di integrazione:
Espandere il campo di stato 200 risposte.La regex è vuota (impostata su default) e questo metodo ha solo 200 risposte. Espandi i mapping di intestazione e imposta le intestazioni ai seguenti valori di mapping:
Access-Control-Allow-Headers: 'Content-Type,X-Amz-Date,Authorization,X-Requested-With'
Access-Control-Allow-Methods: 'GET,POST,OPTIONS'
Access-Control-Allow-Origin: '*'
Non ci sono modelli di mappatura.
Quindi distribuire l'API. Speriamo che ora consenta richieste CORS. Ho riscontrato lo stesso identico problema che hai fatto e sono abbastanza certo che il problema mancasse il valore X-Requested-With in Access-Control-Allow-Headers.
Qual è l'URL del punto finale? Se non è localhost, non sarà possibile effettuare una richiesta a causa delle limitazioni CORS (https://en.wikipedia.org/wiki/Cross-origin_resource_sharing). Dovrai effettuare una Proxy delle tue richieste o richiedere lo stesso URL della tua destinazione. –
Quale valore è Access-Control-Allow-Origin nel gateway API (sia il post che le opzioni) – Luc
'*', proprio come nel documento che ho collegato. Lo stesso per entrambi i metodi OPTIONS e POST – dudemonkey