我正在構建一個 Web 應用程式,后端使用 Django,資訊傳輸使用 RestApi,前端使用 ReactJs。當我運行一個從表單發送資料的 POST 請求時,我收到一個錯誤:“CSRF Failed: Origin checking failed - http://localhost:8000/ does not match any trusted origins”。這意味著 Django 識別這個問題,但出于某種未知原因拒絕了它。
ReactJs 使用代理來處理服務器資料。我已經閱讀了論壇上已經解決的文章,例如第 1條、第 2條、第 3條、第 4 條,他們的解決方案對我沒有幫助。
我對 ReactJs 的要求:
const item = {tittle : data.target.tittle.value, description : data.target.description.value};
axios({
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
method : "post",
url : "api/articles/",
data : item
}).catch((e) => {console.log(e)})
設定.py:
CSRF_TRUSTED_ORIGINS = [
'http://localhost:8000'
]
ALLOWED_HOSTS = [
'localhost',
]
CORS_ORIGIN_WHITELIST = [
'http://localhost:8000',
]
CORS_ORIGIN_ALLOW_ALL = True
views.py 中處理請求的類:
class ArticleList(generics.ListCreateAPIView):
def post(self, request, format=None):
serializer = ArticleSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def get(self, request, format=None):
snippets = Articles.objects.all()
serializer = ArticleSerializer(snippets, many=True)
return Response(serializer.data)
uj5u.com熱心網友回復:
它幫助我將 authentication_classes = [] 變數添加到類的主體中。現在我的 ArticleList 類看起來像這樣:
class ArticleList(generics.GenericAPIView):
authentication_classes = []
def post(self, request, format=None):
serializer = ArticleSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def get(self, request, format=None):
snippets = Articles.objects.all()
serializer = ArticleSerializer(snippets, many=True)
return Response(serializer.data)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/537340.html
標籤:Python反应姜戈休息
