Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 每个请求中都有新的sessionid_Django_Reactjs_Http_Cookies_Axios - Fatal编程技术网

Django 每个请求中都有新的sessionid

Django 每个请求中都有新的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

我正在创建我的django react应用程序。我想通过Cookie进行身份验证,就像Django oscar文档一样

但是当我发送post请求时,我会在每个请求中获得一个新的会话id。 我正在使用具有凭据的axios

这是我的base.py

 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再次被设置。