작성
·
65
0
세션을 실행하고 있어 curl로 실행하려고 하는데 아래와 같은 에러 메세지가 뜨네요.
Invoke-WebRequest : 매개 변수 이름 'c'이(가) 모호하므로 매개 변수를 처리할 수 없습니다. 일치하는 항목은 다음과
같습니다. -Credential -CertificateThumbprint -Certificate -ContentType.
위치 줄:1 문자:45
+ curl -X POST http://127.0.0.1:8000/set/ -i -c cookies.txt
+ ~~실행하면 위와 같은 에러메시지가 나오는데 어떻게 해결할 수 있나요? from fastapi import FastAPI,Request from fastapi.security import HTTPBasic from starlette.middleware.sessions import SessionMiddleware app=FastAPI() app.add_middleware(SessionMiddleware,secret_key="your-secret-key") @app.post("/set/") async def set_session(request:Request): request.session["username"]='smith' return {"message":"Session value"} @app.get("/get/") async def get_session(request:Request): username=request.session.get("username","Guest") return {"username":username}
답변 1
0
안녕하세요. 답변 도우미입니다.
혹시 curl 명령을 Windows 의 PowerShell 에서 실행하셨는지 궁금하네요. 사실 저도 그런 에러를 본적은 없다보니 무엇이 문제인지 찾아보았는데요.
다음과 같은 답변을 확인하였습니다. PC 환경이 워낙 다양해서 꼭 무조건 PowerShell 에서는 안된다는 건 아닌데, 특정 환경에서는 또 이러한 문제가 있을 수 있는 것 같습니다. 다음과 같은 가이드와 함께 curl.exe 로 테스트를 해보시면 어떠실까요?
현재 발생한 오류는 curl
명령어를 Windows의 PowerShell에서 실행하려고 할 때 발생하는 문제입니다. Windows PowerShell에서는 curl
명령어를 Invoke-WebRequest
로 해석하는데, 이로 인해 명령어의 옵션인 -c
가 Invoke-WebRequest
의 여러 매개변수 중 하나로 오인되어 발생하는 문제입니다.
PowerShell에서 curl
대신 curl.exe
사용하기: PowerShell은 기본적으로 curl
명령어를 Invoke-WebRequest
로 대체합니다. 이를 우회하기 위해 명령어에서 curl
대신 curl.exe
를 사용해보세요.
curl.exe -X POST http://127.0.0.1:8000/set/ -i -c cookies.txt
PowerShell에서 Invoke-WebRequest
명령어 사용: PowerShell에서는 curl
대신 Invoke-WebRequest
를 사용할 수 있습니다. 그러나 이 경우 -c
옵션(쿠키 저장)을 사용할 수 없기 때문에, Invoke-WebRequest
로는 동일한 기능을 처리하기 어렵습니다.
대신, curl
명령어는 Windows용으로 제공되는 Git Bash
나 WSL(Windows Subsystem for Linux)
환경에서 사용할 수 있습니다.
Git Bash나 WSL을 사용: PowerShell 대신 Git Bash나 WSL을 사용하면, curl
명령어가 리눅스 환경처럼 제대로 동작합니다. Git Bash는 간단히 설치할 수 있으며, 리눅스 명령어들과 동일한 명령어를 사용할 수 있습니다.
PowerShell에서는 curl.exe
로 명령어를 실행하면 문제가 해결될 가능성이 큽니다.
PowerShell에서 명령어를 사용하려면 Invoke-WebRequest
대신 Git Bash
나 WSL
에서 curl
명령어를 사용하는 것이 더 좋습니다.
감사합니다. 잔재미코딩 드림.