2016-07-25 34 views
2

Ich führe Parser-Server hinter AWS CloudFront und ich versuche immer noch herauszufinden, was die beste Konfiguration wäre. Zur Zeit habe ich das Cloudfront Verhalten konfiguriert:Welche Header müssen in AWS CloudFront für Parse Server auf die Whitelist gesetzt werden

  • erlaubt HTTP-Methoden: GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
  • Cached HTTP-Methoden: GET, HEAD (Cached Standardeinstellung)
  • nach vorne Headers: Weiße Liste
    • Accept-Language
    • Content-Type
    • Host-
    • Origi n
    • Referer
  • Object Caching: Anpassen:
    • Minimum TTL: 0
    • Maximale TTL: 31536000
    • Standard TTL: 28800
  • Vorwärts Cookies: Alle

Meine GET-Anforderungen (mit der parse-REST-API) scheinen bei dieser Konfiguration erwartungsgemäß zwischengespeichert zu sein. Alle Anfragen, die das Parsing JS SDK gemacht verwenden scheinen über POST und erzeugen einen 504 Fehler in der Browser-Konsole aufgerufen werden:

No 'Access-Control-Allow-Origin' header is present on the requested resource. 

Aus irgendwelchen Gründen diese Anforderungen noch erfüllt von dem Parse-Server, da z.B. Das Speichern von Objekten speichert sie immer noch in meiner MongoDB, obwohl es diesen Fehler bei der Zugriffssteuerung gibt.

+0

Das Problem war/ist das CLOUDFront Standard Timeout von 30 Sekunden. Da sich meine DB (und mein Produktionsserver) in Tokio befinden, laufen Anfragen von meinem deutschen Testserver mehr als 30 Sekunden lang, was CloudFront dazu veranlasst, einen Fehler von 504 zurückzugeben. Meine Lösung ist jetzt, CloudFront vollständig zu entfernen, da ich die Standard 30 Sekunden auf AWS nicht ändern kann. – flavordaaave

Antwort

0

Die Fehlerbehebung dafür erfolgt nicht über die Cloud-Front, sondern von der Seite des Parse-Servers.

In dieser Datei /src/middlewares.js fügen Sie den untenstehenden Code und die Cloud von wird nicht gründlich diese Ausnahme.

var allowCrossDomain = function(req, res, next) { 
    res.header('Access-Control-Allow-Origin', '*'); 
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); 
    res.header('Access-Control-Allow-Headers', 'X-Parse-Master-Key, X-Parse-REST-API-Key, X-Parse-Javascript-Key, X-Parse-Application-Id, X-Parse-Client-Version, X-Parse-Session-Token, X-Requested-With, X-Parse-Revocable-Session, Content-Type');