或者,我使用以下ajax来设置cookie。
function setCookieAjax(){
$.ajax({
url: `${Web_Servlet}/setCookie`,
contentType: 'application/x-www-form-urlencoded;charset=utf-8',
headers: { 'Access-Control-Allow-Origin': '*',
'username': getCookie("username"),
'session': getCookie("session")
},
type: 'GET',
success: function(response){
setCookie("username", response.name, 30);
setCookie("session", response.session, 30);}
})
}
function setCookie(cname, cvalue, minutes) {
var d = new Date();
d.setTime(d.getTime() + (minutes*60*1000));
var expires = "expires="+ d.toUTCString();
document.cookie = cname + "=" + cvalue + "; " + expires;
}
export const getUserName = (component) => {
setCookieAjax()
$.ajax({
url: `${Web_Servlet}/displayHeaderUserName`,
contentType: 'application/x-www-form-urlencoded;charset=utf-8',
headers: { 'Access-Control-Allow-Origin': '*',
'username': getCookie("username"),
'session': getCookie("session")
},
type: 'GET',
success: function(response){
component.setState({
usernameDisplay: response.message
})
}.bind(component)
})
}
现在,我想使用servlet的添加cookie功能设置cookie。但我不知道如何实现我的目的。
Cookie loginCookie = new Cookie("user",user); //setting cookie to expiry in 30 mins
loginCookie.setMaxAge(30*60);
loginCookie.setDomain("localhost:4480");
loginCookie.setPath("/");
response.addCookie(loginCookie);
为了延长cookie的时间限制,我应该在反应方面写什么来接收cookie的会话时间?
答案 0 :(得分:74)
以前react-cookie
npm包中的功能似乎已移至universal-cookie
。 universal-cookie repository现在的相关示例是:
import Cookies from 'universal-cookie';
const cookies = new Cookies();
cookies.set('myCat', 'Pacman', { path: '/' });
console.log(cookies.get('myCat')); // Pacman
答案 1 :(得分:9)
答案 2 :(得分:5)
一个非常简单的解决方案是使用sfcookies包。 你只需要使用npm安装它,例如: npm install sfcookies --save
然后导入文件:
import { bake_cookie, read_cookie, delete_cookie } from 'sfcookies';
创建一个cookie密钥:
const cookie_key = 'namedOFCookie';
在提交功能上,您可以通过保存数据来创建cookie,如下所示:
bake_cookie(cookie_key, 'test');
删除它只是做
delete_cookie(cookie_key);
并阅读:
read_cookie(cookie_key)
简单易用。
答案 3 :(得分:4)
使用香草js,例如
document.cookie = `referral_key=hello;max-age=604800;domain=example.com`
更多信息,请访问:https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie
答案 4 :(得分:3)
很少更新。有一个可用于react-cookie的钩子
1)首先,安装依赖项(仅用于注释)
yarn add react-cookie
或
npm install react-cookie
2)我的用法示例:
// SignInComponent.js
import { useCookies } from 'react-cookie'
const SignInComponent = () => {
// ...
const [cookies, setCookie] = useCookies(['access_token', 'refresh_token'])
async function onSubmit(values) {
const response = await getOauthResponse(values);
let expires = new Date()
expires.setTime(expires.getTime() + (response.data.expires_in * 1000))
setCookie('access_token', response.data.access_token, { path: '/', expires})
setCookie('refresh_token', response.data.refresh_token, {path: '/', expires})
// ...
}
// next goes my sign-in form
}
希望这会有所帮助。
非常感谢您改进上述示例的建议!
答案 5 :(得分:2)
默认情况下,当您提取 网址时,React native会设置Cookie。
查看Cookie并确保您可以使用https://www.npmjs.com/package/react-native-cookie包。 我曾经非常满意。
当然,获取会在
时执行此操作credentials: "include",// or "some-origin"
嗯,但是如何使用它
---安装后这个包----
获取Cookie:
import Cookie from 'react-native-cookie';
Cookie.get('url').then((cookie) => {
console.log(cookie);
});
用于设置Cookie:
Cookie.set('url', 'name of cookies', 'value of cookies');
只有这个
但如果你想要一些,你可以做到
1- as asested:
Cookie.set('url', 'name of cookies 1', 'value of cookies 1')
.then(() => {
Cookie.set('url', 'name of cookies 2', 'value of cookies 2')
.then(() => {
...
})
})
2-作为一起回来
Cookie.set('url', 'name of cookies 1', 'value of cookies 1');
Cookie.set('url', 'name of cookies 2', 'value of cookies 2');
Cookie.set('url', 'name of cookies 3', 'value of cookies 3');
....
现在,如果你想确保设置了cookie,你可以再次确认它。
Cookie.get('url').then((cookie) => {
console.log(cookie);
});
答案 6 :(得分:0)
您可以使用默认的javascript cookie设置方法。这个工作完美。
createCookieInHour: (cookieName, cookieValue, hourToExpire) => {
let date = new Date();
date.setTime(date.getTime()+(hourToExpire*60*60*1000));
document.cookie = cookieName + " = " + cookieValue + "; expires = " +date.toGMTString();
},
在如下的react方法中调用Java脚本功能
createCookieInHour('cookieName', 'cookieValue', 5);
,您可以使用以下方式查看Cookie。
let cookie = document.cookie.split(';');
console.log('cookie : ', cookie);
请参考以下文档以获取更多信息-URL