gpt4 book ai didi

reactjs - 无法在 React 应用程序 (CORS) 中从服务器端 (golang) 获取 cookie

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

我有一个用 go 编写的非常简单的服务器应用程序:

package main

import (
"fmt"
"math/rand"
"time"
"net/http"
"encoding/base64"
"encoding/json"
"github.com/rs/cors"
)

type Message struct {
Text string `json:"text"`
}

var cookieQuotes = []string{
...
}

const COOKIE_NAME = "your_cookie"

func main() {
mux := http.NewServeMux()
mux.HandleFunc("/set_cookie", setCookie)
mux.HandleFunc("/get_cookie", getCookie)
mux.Handle("/favicon.ico", http.NotFoundHandler())
handler := cors.Default().Handler(mux)
http.ListenAndServe(":8080", handler)
}

...

好吧,我在这里跳过了大部分代码,但让我解释一下它的作用。

当我们转到/set_cookie 路径时,我们正在为我们的浏览器获取一个 cookie。 Cookie 有一个值,它是关于 cookie 的引用的加密文本。所以,这里是函数:

func setCookie(w http.ResponseWriter, r *http.Request) {
quote := getRandomCookieQuote()
encQuote := base64.StdEncoding.EncodeToString([]byte(quote))
http.SetCookie(w, &http.Cookie{
Name: COOKIE_NAME,
Value: encQuote,
})
}

此应用程序部署在 VirtualBox 中的 docker 容器中。

所以,当我访问

http://IP_ADDRESS:PORT/set_cookie

cookie 被设置到浏览器。当我访问

http://IP_ADDRESS:PORT/get_cookie

我从 cookie 中得到解密的文本(但这在这个问题的情况下并不重要)

客户端是用 React 编写的。好吧,我认为没有必要把应用程序的所有代码都贴出来,但主要部分在这里:

export const setCookie = () => async dispatch => {
const res = await axios.get(URL+SET_COOKIE_PATH);
console.log('set_cookie', res);
};

这和我们刚才调用是一样的

http://IP_ADDRESS:PORT/set_cookie

但是我无法将 cookie 发送到浏览器。绝不。我收到状态代码为 200 的响应,一切似乎都正常,但我没有收到 cookie。

我不得不提一下,这是一个跨站点的事情。

因此,问题是:如何将 cookie 从服务器传递到客户端?

最佳答案

解决方法是在package.json中写代理变量获取CORS

例如,如果客户端在localhost:3000,服务器在localhost:8080,我们应该添加:

"proxy": "http://localhost:8080/"

并使用客户端域访问服务器API的任何路径,例如:

http://localhost:3000/set_coookie

关于reactjs - 无法在 React 应用程序 (CORS) 中从服务器端 (golang) 获取 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46495571/

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