Django 每个请求中都有新的sessionid
我正在创建我的django react应用程序。我想通过Cookie进行身份验证,就像Django oscar文档一样 但是当我发送post请求时,我会在每个请求中获得一个新的会话id。 我正在使用具有凭据的axios 这是我的base.pyDjango 每个请求中都有新的sessionid,django,reactjs,http,cookies,axios,Django,Reactjs,Http,Cookies,Axios,我正在创建我的django react应用程序。我想通过Cookie进行身份验证,就像Django oscar文档一样 但是当我发送post请求时,我会在每个请求中获得一个新的会话id。 我正在使用具有凭据的axios 这是我的base.py MIDDLEWARE = [ 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.security.SecurityMiddleware', 'corsh
MIDDLEWARE = [
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.security.SecurityMiddleware',
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'oscar.apps.basket.middleware.BasketMiddleware',
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
]
CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
CORS_ORIGIN_WHITELIST = [
"https://example.com",
"https://sub.example.com",
"http://127.0.0.1:8000",
"http://localhost:3000",
"http://localhost:8000",
"http://127.0.0.1:9000",
"127.0.0.1"
]
这是我的帖子
import axios from "axios"
import Bar from './Bar';
import BasketItem from './BasketItem'
import "../css/basket.min.css"
const session = axios.create({
withCredentials: true
});
const configAxios = {
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Credentials': true,
},
};
const Basket = props => {
const [countries, setCountries] = useState([]);
const [load, setLoad] = useState(false);
const [error, setError] = useState('');
const [array, setArray] = useState([]);
useEffect(() => {
const data = {
url: "http://127.0.0.1:8000/api/products/22/",
quantity: 1,
}
session.post('http://127.0.0.1:8000/api/basket/add-product/',data)
.then(res =>{
console.log(res.data)
console.log("Cookies are ", document.cookie)
})
session.post('http://127.0.0.1:8000/api/basket/add-product/',data)
.then(res =>{
console.log(res.data)
console.log("Cookies are ", document.cookie)
})},[])
这是我请求的结果
因此,如果您可以看到sessionid值是不同的,而不是相同的,并且它提供给401错误。您找到了解决方案吗?Django 1.11上也有同样的问题:对于每个请求,我都会得到一个带有
Set Cookie
的响应,该Cookie将sessionId
替换为一个新的。这使得在cookie上的vary\u变得毫无用处,因为cookie总是不同的。@Salvatoreioven,我也有同样的问题。你找到解决方案了吗?@Asif Biswas是的,我的一个中间件在每次请求时都在会话上设置一些数据,导致会话发生变化,cookie再次被设置。