2016-04-29 3 views
1

Моя функция golang не перенаправляет нигде, когда вызывается функцией fetch javascript. Это расширение моего предыдущего вопроса, который был слишком широк. Facebook Oauth CORS errorGolang Redirect from JS call CORS error

Это моя функция извлечения javascript, вызывающая golang api.

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 обратно.

Я удостоверился, что заголовки сервера golang были правильными и разрешили происхождение javascript (localhost: 3000). И я убедился, что oauth api на facebook разрешает домен сервера golang (localhost: 7001). Тем не менее, перенаправления всегда блокируются при доступе к доменам за пределами области локального домена.

+0

Как @OneOfOne сказал в ответ, вы не можете этого сделать. Ваш JS-код должен будет выдать перенаправление, и только если он встроен JS на том же сайте. Кроме того, вы получите ошибку CORS. – eduncan911

ответ

1

Вы не можете этого сделать, вам придется на самом деле перенаправить браузер (откройте его в поп-окне или что-то в этом роде).

+1

Спасибо! Сначала я обрабатывал переадресацию на сервере, потому что именно так я сначала узнал oauth2. Я думал, что сервер должен обрабатывать ключевые обмены и перенаправления. Но с интерфейсом javascript я могу просто извлечь url самостоятельно. Поэтому я просто использовал window.location с разобранным URL. – goda