Frage

Ich arbeite in einem Intranet mit mehreren Sub-Domains. Ich habe die Kontrolle über jede Sub-Domain, so dass die Sicherheit von Cross-Site-Anfragen kein Problem ist. Ich habe PHP-Skripte mit JSON Antworten, die ich aus mehrere Sub-Domains ohne Doppelarbeit nennen möchte. Für GET-Anfragen, kann ich dies tun mit AJAX und JSONP, aber das mit POST-Anfragen nicht funktioniert. Einige Alternativen ich sehe, von denen keines scheinen sehr gut:

  • POST auf eine Kopie der lokalen Sub-Domain mit minimaler Reaktion, dann GET vollständige Antwort von einem zentralen Lage mit JSONP
  • Sowohl POST und GET auf eine Kopie auf lokaler Sub-Domain mit JSON
  • Verwenden Sie mod_rewrite lokale URLs mit JSON mit einem zentralen Skript auf Back-End verwenden
  • Verwenden Sie Symlinks lokalen URLs mit einem zentralen Skript auf Back-End mit JSON
  • verwenden

Fehle ich etwas einfacher? Was würden Sie tun hier?

War es hilfreich?

Lösung

sehen gerade in diesem https://developer.mozilla.org/En/HTTP_access_control Seite. Alles was Sie brauchen - fügen Sie Header für alle Sie Skripte, die Post-Anforderung annehmen. Beispiel:

Andere Tipps

Sie können einen einfachen Reflektor auf der Serverseite schreiben. Fügen Sie ein Skript für jede Domain, die einfach übergibt Ihre Ajax-Request an die entsprechende Domäne. Dieses Skript kann sehr einfach sein (1 oder 2 Zeilen Code), vermeidet Ihre Cross-Site-Scripting-Probleme und bedeutet, dass Sie nicht die komplizierte Business-Logik in Ihrer vorhandenen Skripte duplizieren müssen.

Es wird dazu führen, zusätzliche Arbeit für den Server, aber das ist vielleicht kein Problem für Sie sein.

Der nächste Beispiel Code, den ich auf den Seiten finden kann ich verwalten, ist die folgende. Hier mussten wir der Lage sein, Googles Chart API auf eine HTTPS-Verbindung zu verwenden (die es noch nicht unterstützt). Die Lösung war das folgende Skript hinzuzufügen, die die Anrufe weitergeleitet ...

<?php
// Set header so our output looks like a PNG
header("Content-Type: image/png");

// Reflect the image from googles chart API
echo file_get_contents('http://chart.apis.google.com/chart?'.$_SERVER['QUERY_STRING']);
?>

Ich verwende REST-Ansatz in solchen Fällen. Google-Suche nach mehr Informationen über REST.

Wenn sie alle Subdomains der gleichen Domäne sind, können Sie einfach diesen Code hinzufügen zu jeder Seite:

document.domain = 'domain.com';

Dann einfach nur XMLHttpRequest verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top