gpt4 book ai didi

reactjs - 在 Go 中从 Back 发送 Cookie,这是一个 api 休息,使用 React JS 发送到前端

转载 作者:行者123 更新时间:2023-12-01 22:41:18 25 4
gpt4 key购买 nike

大家好,我怀疑我正在学习 golang 以及如何构建和使用 API。我几乎在服务器端 (Golang) 上完成了所有工作,在前端 (React.Js) 中,我可以使用 Axios 发出获取/发布请求以进行登录、注册、发布(该应用程序将成为一个论坛)。问题是当我想保护一些路由时,当我试图从服务器端设置 Cookie 时,前端会得到一个空的 Cookie,但相反,我可以在前端设置一个 cookie。我应该在哪里创建和管理 cookie 和 session ?
我会让一些代码。
戈朗:
处理程序的标题:

w.Header().Set("Content-type", "application/json")
w.Header().Set("Access-Control-Allow-Origin", "http://localhost:3000")
w.Header().Set("Access-Control-Allow-Headers", "Content-Type")
w.Header().Set("Access-Control-Allow-Credentials", "true")
cookies Go:
func SetCookie (w http.ResponseWriter) {
cookie := http.Cookie{
Name: "LoginCookie",
Value: "LoginCookieValue",
Path: "/",
}
http.SetCookie(w, &cookie)
}
服务器通过前端的 AJAX 请求(Axios)在浏览器中的 Cookie 响应:
Cookie: {Name: "", Value: "", Path: "", Domain: "", Expires: "0001-01-01T00:00:00Z", …}
但是使用 React 我可以创建一个 cookie 并在浏览器中查看:
      setCookie() {
const cookieName = 'LoginCookie'
const cookieVal = uuidv4()
const cookies = new Cookies();
cookies.set(cookieName, cookieVal , { path: '/' });
console.log(cookies.get(cookieName));
}
我该做什么?不管怎么说,还是要谢谢你。
编辑:在这里,我让完整的 Axios 请求作为成员建议:
   async submit (event) {

var userLogin = {
email: this.state.email,
password: this.state.password
}

let axiosConfig = {
headers: {
'Content-Type': 'application/json'
}
}

event.preventDefault();

await axios.post(`http://localhost:2000/users/sign-in/`, userLogin, axiosConfig,
{withCredentials: true})
.then(response => {
console.log(response)
console.log(response.data)
console.log(response.data.status)
console.log(response.data.cookie)
if (response.data.status === 200) {
this.setCookie()
}
this.clearFieldLogin()

}).catch(err => console.log(err))

}

clearFieldLogin(){
document.getElementById("formLogin").reset()
}

最佳答案

您需要在后端设置 cookie 并在 react 中读取它,{ withCredentials: true }选项应该在 axiosConfig 对象中:

axiosConfig["withCredentials"] = true
await axios.post(
`http://localhost:2000/users/sign-in/`,
userLogin,
axiosConfig,
)
你的错误代码:
await axios.post(
`http://localhost:2000/users/sign-in/`,
userLogin,
axiosConfig,
{withCredentials: true}
)

关于reactjs - 在 Go 中从 Back 发送 Cookie,这是一个 api 休息,使用 React JS 发送到前端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63545884/

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