簡體   English   中英

部署網站時無法從后端設置 cookies

[英]Unable to set cookies from backend to frontend when deploying website

我的服務器使用 Nodejs,客戶端使用 Reactjs。 在我的客戶端中,我使用 axios 對服務器執行 post/get 請求。 在開發過程中,一切正常,數據已獲取,cookies 設置正確。 但是,當我將服務器和客戶端分別部署到 Heroku 和 Netlify 時,突然沒有設置 cookies。

這是我的服務器代碼:


dotenv.config()
const server = express();
server.use(cors({origin: "https://frontendname.com", credentials: true}));

server.use(express.json());
server.use(express.urlencoded({extended:true}))
server.use(cookieParser())
server.use("/", fetchData)

server.listen(process.env.PORT, ()=>console.log(`Server listening on PORT ${process.env.PORT}`))
mongoose.connect(process.env.MONGO_URI, {useNewUrlParser: true, useUnifiedTopology: true}).then( () => {
    console.log("connected to mongoose")
    

}).catch((error) => console.log(error.message))

我的服務器 API 代碼

res.status(201)       .cookie("accessToken", accessToken, {domain:"frontendwebsite.com", httpOnly: true, sameSite: 'strict', path: '/', expires: new Date(new Date().getTime() + 60 * 1000 * 4)})                          .cookie("refreshToken", refreshToken, {domain:"frontendwebsite.com", httpOnly: true, sameSite: 'strict', path: '/', expires: new Date(new Date().getTime() + 60 * 1000 * 96)})                          .json({message: "login verified", username: req.body.username})                 .send()

我的客戶 API 代碼:

axios.defaults.withCredentials = true
export const loginAuth = async (credentials) => { 
    return await axios.post("https://backendname.herokuapp.com/loginAuth", credentials).then((res) => {
        
        return res
    })
}


由於“res.cookie”中的域名不正確,我有一種強烈的感覺。 因為在我的開發中,當我為服務器和客戶端使用 localhost 時,它可以工作。 我的客戶端托管在 Netlify 上,服務器托管在 Heroku 上。 我的客戶有一個我從 GoDaddy 獲得的自定義域名。 我在該域名上使用了 Netlify DNS。 有任何想法嗎?

您可以檢查從服務器返回的響應(使用瀏覽器開發工具)嗎? 是否有任何 Set-Cookie header / 值返回,還是完全丟失?

我的猜測是 cookie header 在那里,並且正在設置,但是將sameSite設置為strict它不會將其發送到您的后端/API。 所以我認為你對域不正確的看法是正確的,在res.cookie中,你可以嘗試使用backendname.herokuapp.com 由於您確實希望 cookie 傳輸到后端/從后端傳輸,特別是因為它是httpOnly ,所以您的前端/客戶端永遠不會使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM