2016-04-29 3 views
1

Meine Golang-Funktion leitet nirgends umleiten, wenn sie von einer Javascript-Abruffunktion aufgerufen wird. Dies ist eine Erweiterung meiner vorherigen Frage, die zu weit gefasst war. Facebook Oauth CORS errorGolang Redirect von JS Anruf CORS Fehler

Dies ist meine JavaScript-Abruffunktion Aufruf der Golang API.

let config = { 
    method: 'GET', 
} 

fetch("http://localhost:7001/testFunction", config).then(response => { 
    ... 

Dies wird meine golang Funktion wird danach

func testfunc(w http.ResponseWriter, r *http.Request) { 
    http.Redirect(w,r,"https://www.facebook.com/dialog/oauth?..", 302) 
    http.Redirect(w, r, "http://localhost:7001/", 302) 
    http.Redirect(w, r, "http://google.com/", 302) 
} 

Das Ergebnis sein soll umgeleitet werden versuchen, dass die Seite außerhalb der Domain auf eine Seite umgeleitet, aber ich diesen Fehler konsequent auf Netzwerk.

Fetch API cannot load http://google.com. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled. 

Ich kann nicht nicht-cors Modus benutzen, weil ich auf diese Seite umgeleitet werden müssen oder sogar eine json abrufen zurück.

Ich stellte sicher, dass die Golang-Server-Header richtig waren und erlaubte den Javascript-Ursprung (localhost: 3000). Und ich habe dafür gesorgt, dass die oauth api auf facebook die golang server domain erlaubt (localhost: 7001). Die Umleitungen werden jedoch immer blockiert, wenn auf Domänen außerhalb des Bereichs der Domäne "localhost" zugegriffen wird.

+0

Wie @OneOfOne in einer Antwort sagte, können Sie das nicht tun. Ihr JS-Code muss die Weiterleitung ausgeben und nur dann, wenn JS auf derselben Site eingebettet ist. Andernfalls erhalten Sie einen CORS-Fehler. – eduncan911

Antwort

1

Sie können das nicht tun, müssen Sie tatsächlich den Browser umleiten (öffnen Sie es in einem Pop-Fenster oder etwas).

+1

Danke! Ich habe anfänglich Umleitungen auf dem Server behandelt, weil ich so oauth2 gelernt habe. Ich dachte, der Server sollte die Schlüsselaustausch und die Weiterleitungen behandeln. Aber mit einem JavaScript-Frontend kann ich die URL selbst holen. Ich habe also window.location mit der geparsten URL verwendet. – goda