2017-07-06 3 views
-1

Ich arbeite an einem SDK-Typ für das Senden von Daten (einschließlich Dateiuploads) an einen Dienst, den ich ausführen .Die beste Methode zum Senden/Abrufen von Daten von einem externen Server, wenn Sie Zugriff auf einen externen Server, aber nicht den gleichen Domänenserver haben

Ich mache Nachforschungen, und versuche herauszufinden, die beste Möglichkeit, Daten zu senden und eine Antwort auf einen externen Server (mein Server) erhalten, ohne durch XSS-Einschränkungen blockiert werden.

Das aktuelle Setup ist wie so:

Der Kunde einen Server hostet, und verwendet meine serverseitige Bibliothek. Sie generieren eine Clientseite, die die erforderliche JS von meinem Server lädt. Die Clientseite fordert Daten von meinem Server an (wenn sie beim Laden der Seite nicht vom SDK übergeben wurden) und zeigt die Informationen dem Benutzer an. Der Benutzer löst dann ein Ereignis aus, das Daten (möglicherweise einschließlich Dateiuploads) an meinen Server sendet (nicht an den lokalen Server mit der SDK-Bibliothek). Mein Server antwortet erfolgreich oder fehlgeschlagen und der Client JS behandelt es entsprechend.

Einige Anmerkungen: Mein Server ist ein privater PHP-Server, über den ich die vollständige Kontrolle habe. Obwohl ich alle Daten durch den Server des Kunden routen konnte (wie sie meine Bibliothek verwenden), ist es nicht ideal, da es mehr Einrichtung für den Kunden erfordert, langsamer für den Endbenutzer ist und das Hochladen von Dateien problematisch ist, wie ich möchte diese Dateien auf meinem Server, nicht ihre. Ich dachte, vielleicht die Datei Upload-Eingaben könnten in einem iframe sein. Werden dadurch Uploads direkt auf meinen Server möglich sein? Da der Kunde meine Bibliothek mit einem API-Schlüssel verwendet, kann ich die Anforderungen des Clients authentifizieren, indem ich beim Laden der Seite ein Authentifizierungstoken an das Frontend übergebe, das dann mit jeder Kommunikationsmethode an meinen Server weitergeleitet wird.

Ich bin offen für Veränderungen in der Architektur, aber das ist das ideale Setup für mich. Ich bin mir nur nicht sicher, welche Frontend-Methoden für die Umsetzung am besten sind.

+1

Also, eine Sache, die Sie betrachten müssen, ist [CORS] (https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS) - der Rest ist zu breit für SO –

Antwort

0

JSONP würde funktionieren, wenn Sie nur GET-Anfragen machen müssen, aber es klingt wie Sie müssen auch POSTs tun, da Sie Datei-Uploads erwähnen.

Für Ihren Fall könnte Cross-Origin Resource Sharing (CORS) funktionieren. Die kurze Erklärung ist, dass ein Browser einen zusätzlichen Header mit dem Namen Origin sendet, wenn Sie eine Anfrage mit XMLHttpRequest an eine andere Domäne senden. Ihr Server muss mit einem zusätzlichen Header mit dem Namen Access-Control-Allow-Origin mit dem Wert * oder dem Wert antworten, den der Browser im Header Origin gesendet hat. Es gibt einige Nuancen und Probleme bei der Verwendung von CORS, daher empfehle ich, den obigen Link für eine gründliche Erklärung zu lesen.

Mit CORS eingerichtet, sollten Sie XMLHttpRequest bis upload files verwenden können.

+0

Während dies Link kann die Frage beantworten, es ist besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - [Aus Bewertung] (/ review/low-quality-posts/16627318) – Roopendra

+2

Ich habe meiner Antwort ein bisschen mehr Details hinzugefügt. – Sean

Verwandte Themen