gpt4 book ai didi

javascript - 在 Golang 回调函数中启用 CORS

转载 作者:IT王子 更新时间:2023-10-29 02:16:11 24 4
gpt4 key购买 nike

我有一个对 Google 的 oAuth2 api 的 AJAX 调用,如下所示:

$(document).on('click', '#signup', function() {
var OAUTHURL = 'https://accounts.google.com/o/oauth2/auth?';
var SCOPE = 'email profile';
var STATE = 'profile';
var REDIRECT_URI = 'https://localhost:8080/callback';
var RESPONSE_TYPE = 'token';
var CLIENT_ID = '554886359117-8icq0dc9halr8rjd6bdtqcmagrdql9lr.apps.googleusercontent.com';
var _url = OAUTHURL + 'scope=' + SCOPE + '&state=' + STATE + '&redirect_uri=' + REDIRECT_URI + '&response_type=' + RESPONSE_TYPE + '&client_id=' + CLIENT_ID;
$.ajax({
type: "POST",
dataType: "text",
url: _url,
success: function(response)
{
console.log(response.url);
},
error: function(error)
{
console.log("ERROR: ", error);
}
});
});

这应该重定向回在 http://localhost/callback 上运行的服务器.

Redirect URIs:  http://localhost:8080/callback
Javascript Origins: http://localhost:8080

我还有如下定义的回调函数:

func init() {
r := mux.NewRouter()

r.HandleFunc("/", rootHandler)
r.HandleFunc("/callback", callbackHandler)
http.Handle("/", r)
}
func callbackHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "I am sent back from the server!"+time.Now().Format("Mon, 02 Jan 2006 15:04:05 MST"))
}

在 Debug模式下一切看起来都很好,除了我从谷歌的 api 返回这个错误:

XMLHttpRequest cannot load https://accounts.google.com/o/oauth2/auth?scope=email%20profile&state=profi…d=554886359117-8icq0dc9halr8rjd6bdtqcmagrdql9lr.apps.googleusercontent.com. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.

我已经做了一些调整,但我似乎无法找到解决方法。有什么想法吗?

最佳答案

就像 Not_a_Golfer 所说的那样,您的后端没有为响应设置正确的 header 。为了处理每种情况下的 CORS 问题,我做了这个小 handler包装您的路由器,因此您不必在每个回调中手动设置 header 。

像这样使用它:

import "github.com/heppu/simple-cors"

func init() {
r := mux.NewRouter()
r.HandleFunc("/", rootHandler)
r.HandleFunc("/callback", callbackHandler)
http.Handle("/", cors.CORS(r))
}
func callbackHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "I am sent back from the server!"+time.Now().Format("Mon, 02 Jan 2006 15:04:05 MST"))
}

关于javascript - 在 Golang 回调函数中启用 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29408491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com