当由javascript提取函数调用时,我的golang函数不会重定向到任何地方。 这是我先前的问题的扩展,这个问题太广泛了。 Facebook Oauth CORS错误
这是我的JavaScript提取函数,称为golang api。
1 2 3 4 5 6 | let config = { method: 'GET', } fetch("http://localhost:7001/testFunction", config).then(response => { ... |
这是我的golang函数尝试之后重定向
1 2 3 4 5 | 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) } |
结果应该是页面重定向到域外的页面,但我在网络上始终遇到此错误。
1 | 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)。 并且我确保facebook上的oauth api允许使用golang服务器域(localhost:7001)。 但是,访问本地主机域范围之外的域时,重定向始终被阻止。
- 正如@OneOfOne在回答中所说,您不能这样做。 您的JS代码只有在同一站点中嵌入了JS时,才必须发出重定向。 否则,您将收到CORS错误。
您无法做到这一点,您实际上必须重定向浏览器(在弹出窗口中打开它)。
- 谢谢! 我最初在服务器中处理重定向,因为这是我最初学习oauth2的方式。 我以为服务器将处理密钥交换和重定向。 但是,使用javascript前端,我可以自己获取网址。 所以我只使用window.location和解析的URL。