ajax部分如下:
$.ajax({
url: 'http://localhost:9090/login?authServer=google',
type: 'GET',
success: function(data){
alert(data)
},
error: function(){
alert("ajax request error!")
}
});
login 路由对应的是LoginByAuth方法。 LoginByAuth方法实现如下:
func (this *OauthController) LoginByAuth(c *gin.Context) {
fmt.Println(".......................LoginByAuth")
authServer := c.DefaultQuery("authServer", "")
conf = readCredentialFile("\\conf\\creds.json", authServer)
state := randToken()
session := sessions.Default(c)
session.Set("state", state)
session.Save()
c.Writer.Header().Set("Access-Control-Allow-Origin", "*")
c.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type")
c.Writer.Header().Set("Access-Control-Allow-Methods", "GET, POST, PUT")
redirect := conf.AuthCodeURL(state)
c.Redirect(http.StatusFound, redirect)
}
三个c.Writer.Header()部分就是为了解决跨域请求问题加的,但是并没有什么卵用! 请求时,页面如下
![微信截图_20171031193411.png](https://static.studygolang.com/171031/3373d9999de3ea06d1b122408a5f75bb.png)
我现在就是授权页面打不开了。请问如果不用ajax,怎么使得打开`http://localhost:9090/login?authServer=google`的时候,就可以访问对应的后台方法 ? 我都是用路由对应的。 啊!!!我可以`<a>`标签的是么?
#2
更多评论
点击用 google 登录,为什么要用ajax?这个要授权的,标准的 OAuth 流程。
点解 google 登录,直接打开 `http://localhost:9090/login?authServer=google`,然后这里会做重定向到 google 去授权,不就行了,你这简单问题复杂化……
#1