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")
c.Writer.Write([]byte("<html><title>Golang Google</title> <body> <a href='" + getLoginURL(state) + "'><button>Login with Google!</button> </a> </body></html>"))
}
因为有跨域请求问题,所以加了三处header的参数,但是c.Writer.Write 之后,ajax如下:
$.ajax({
url: 'http://localhost:9090/login?authServer=google',
// url: 'http://localhost:9090/login',
type: 'GET',
contentType: 'application/json',
dataType: 'json',
success: function(data){
alert(data)
},
error: function(status){
alert("error:"+ status)
}
});
但是一直走error 分支。
![WeChat Image_20171031143424.png](https://static.studygolang.com/171031/c921d05a5d14767cd32c137dcd8f1b98.png)
后台都是正常的,也没有出现什么问题,是什么原因呢?
再请教个问题前辈,我现在把一个重定向的url返回了前端,这个时候我已经可以用jquery去做页面重定向了,但是我觉得不太安全,因为这个url后面的参数都是很隐私的,遇到这种情况,怎么处理会好些呢?
#4
更多评论
我怎么感觉跟跨域一点关系都没有呢,如果是跨域的问题,浏览器 console 会有提示的。另外,你请求 `application/json`,响应应该返回 json 啊~
#1
啊,是之前遇到跨域请求的问题,Get的时候,会先发一个option,然后我就加了header的部分。然后就可以get了。
哦~~~~~~~~是因为我返回的格式 不对......
所以这种情况,我不应该返回json的是不?大神,如果是数据的插入或读取用json, 但是如果要是redirect之类的,就没有必要了是吧?
#2