gpt4 book ai didi

jquery ajax 不创建 golang session cookie

转载 作者:数据小太阳 更新时间:2023-10-29 03:11:10 25 4
gpt4 key购买 nike

我正在为 preact、jquery 和 golang 创建一个创建登录部分。我正在使用 chrome 进行测试。登录 API 可以很好地与用 golang 编写的 postman 进行测试。这是这部分的代码

e.Use(session.Middleware(sessions.NewCookieStore([]byte("secret"))))
//e.Use(xrayWrapper("bonusapi"))

e.POST("/login", func(c echo.Context) error {
sess, _ := session.Get("session", c)
sess.Options = &sessions.Options{
Path: "/",
MaxAge: 86400 * 7,
HttpOnly: true,
}

if(sess.Values["auth"] == true){
return c.String(http.StatusOK, "Already Login")
}else {
fmt.Println(sess.Values["auth"])
}

if(c.FormValue("password") == "admin" && c.FormValue("username") == "admin"){
sess.Values["auth"] = true
sess.Save(c.Request(), c.Response())
fmt.Println(sess.Values["auth"])
return c.String(http.StatusOK, "Login session start")
}else {
return c.String(http.StatusOK, "Forbidden Access")
}

//return c.String(http.StatusOK, )
})

但是当我使用 ajax 请求和 jquery 时它不起作用。我的意思是 session cookie 在 ajax 请求中不起作用。我不确定它有什么问题。任何人都可以帮忙,请。这是我的 ajax 请求代码,我认为它有问题

var username = props["path"][6].getElementById("username").value.trim();
var password = props["path"][6].getElementById("password").value.trim();
var credentials = {
username: username,
password: password
}

var _this = this
$.ajax({
type: "POST",
url:"http://127.0.0.1:5000/login",
data:credentials
})
.done(function(data){
console.log(data);
});

最佳答案

您缺少 ajax header withCredentials

对于跨域场景,需要做三件事:

  • 客户端需要为xhr对象设置withCredentials=true
  • 在 OPTIONS 预检请求和实际请求中设置 Access-Control-Allow-Credentials
  • 根据需要设置cookie

The most interesting capability exposed by both XMLHttpRequest or Fetch and CORS is the ability to make "credentialed" requests that are aware of HTTP cookies and HTTP Authentication information. By default, in cross-site XMLHttpRequest or Fetch invocations, browsers will not send credentials.

$.ajax({
type: "POST",
url:"http://127.0.0.1:5000/login",
data:credentials,
xhrFields: {
withCredentials: true
}
})
.done(function(data){
console.log(data);
});

关于jquery ajax 不创建 golang session cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51472356/

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