2016-04-29 57 views
1

我的golang函數在JavaScript提取函數調用時不會在任何地方重定向。這是我以前的問題的擴展,這個問題太廣泛了。 Facebook Oauth CORS errorGolang從JS調用重定向CORS錯誤

這是我調用golang api的javascript fetch函數。

let config = { 
    method: 'GET', 
} 

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

這是我golang函數試圖重定向之後

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) 
} 

的結果應該是該頁面重定向到外域的頁面,但我一直得到網絡這個錯誤。

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. 

,因爲我需要重定向到該頁面,甚至檢索JSON回來,我無法使用無CORS模式。

我確保golang服務器標頭是正確的,並且允許javascript origin(localhost:3000)。我確信Facebook上的oauth api允許golang服務器域(localhost:7001)。然而,訪問localhost域作用域之外的域時,重定向始終被阻止。

+0

正如@OneOfOne在回答中所說的,你不能那樣做。你的JS代碼必須發出重定向,並且只有當它在同一個站點上嵌入JS時。否則,你會得到一個CORS錯誤。 – eduncan911

回答

1

你不能這樣做,你將不得不實際重定向瀏覽器(在彈出窗口中打開它)。

+1

謝謝!我最初處理服務器中的重定向,因爲那是我最初學習oauth2的方式。我認爲服務器要處理密鑰交換和重定向。但是,對於JavaScript前端,我可以自己獲取網址。所以我剛剛使用瞭解析URL的window.location。 – goda