Невозможно установить файл cookie httponly с помощью FastAPI.Python

Программы на Python
Anonymous
Невозможно установить файл cookie httponly с помощью FastAPI.

Сообщение Anonymous »

Когда пользователь входит в систему, я создаю вход с помощью pyjwt и устанавливаю файл cookie Httponly, но не могу установить файл cookie из-за CROS.
Когда пользователь входит в систему, я создаю вход с помощью pyjwt и установка файлов cookie httponly следующим образом.
def create_jwt(user_id: str, ip_address: str=None):
payload = {
"sub": str(user_id),
"ip": ip_address,
"iat": datetime.now(),
"exp": datetime.now() + timedelta(minutes=30)
}

return jwt.encode(payload, PRIVATE_KEY, algorithm="RS256)

from pymongo import MongoClient

client = MongoClient("mongodb://localhost:27017/")
database = self.client["test"]

@login_router.post("/login", response_model=SuccessResponse, tags=("Login",))
async def login(request: LoginRequest, response: Response):
try:
username = request.username
password = request.password

user = database.find_one(
"user",
filter={"username": username},
)

if not user or not login_instance.verify_password(
password, user.get("password"), user.get("salt")
):
raise InvalidUser()

from ..authentication import create_jwt

response.set_cookie(
key="access_token",
value=create_jwt(username),
httponly=True,
samesite="None",
secure=False,
path="/",
)

response_content = {
"status": status.HTTP_200_OK,
"success": True,
"message": "User Logged In successfully",
"data": {},
}
return response_content
except InvalidUser:
raise InvalidUser()
except Exception as e:
raise InternalServerError(e)

Когда я нажимаю на этот API во внешнем интерфейсе (мой интерфейс написан на VueJS), он говорит, что невозможно установить файл cookie.

Изображение ошибки
Я добавил CROS в FastAPI main.py

main.py
app = FastAPI()

app.add_middleware(
CORSMiddleware,
allow_origins=["http://localhost:8081"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)

Мой внешний интерфейс работает на порту **8081.
Внешний интерфейс**

api.js
import axios from 'axios';

const apiURL = process.env.VUE_APP_BASE_URL;

const apiClient = axios.create({
baseURL: apiURL,
headers: {
'Content-Type': 'application/json',
},
withCredentials: true,
});

export const get = (endpoint, params = {}) => {
return apiClient.get(endpoint, { params });
};

export const post = (endpoint, payload) => {
return apiClient.post(endpoint, payload);
};


Подробнее здесь: https://stackoverflow.com/questions/790 ... ng-fastapi

Вернуться в «Python»