Flask 및 Python에서 POST 요청 문제 해결
P粉476475551
2023-09-02 14:08:47
<p>저는 Flask의 POST 请求处관리를 위해 클라이언트를 사용하고 있습니다.</p>
<pre class="brush:php;toolbar:false;">app = Flask(__name__)
CORS(앱)
@app.post("/api/clients/")
def addClient():
데이터 = 오픈('./src/clients.json', 'w+')
클라이언트 = json.load(데이터)
요청 = json.loads(request.data)
클라이언트.추가(요구)
json.dump(클라이언트, 데이터)
데이터.닫기()
요청 반환</pre>
<p>Javascript의 <code>fetch()</code> API时:</p>
<pre class="brush:php;toolbar:false;">let u = "http://url/api/clients/n1/"
b = {라고 놔두세요
"클라이언트": "n1",
'세부정보': {
"주소1": "라인1",
"주소2": "라인2",
"도시": "도시",
"이메일": "@",
"gst": "gstno"
}
}
const addStudent = async (us, c) => {
const 응답 = 가져오기를 기다립니다(us, {
방법: "POST",
헤더: {
"콘텐츠 유형": "application/json",
},
본체: c,
});
const 데이터 = 응답을 기다립니다.json();
console.log(데이터);
};
addStudent(u, b);</pre>
<p>浏览器控台显示以下错误:</p>
<인용문>
<p>访问'url/api/clients/'myfetch被阻止了, 因为源'null'没有'Access-Control-Allow-Origin' 표시.模式设置为'no-cors'以禁用CORS获取资源。</p>
</인용문>
<p>참고로 다음은 Flask 명령줄에 언급된 오류입니다. </p>
<인용문>
<p>127.0.0.1 - - [2023년 3월 26일 18:09:05] "POST /api/clients/ HTTP/1.1" 500 -
역추적(가장 최근 호출 마지막):
파일 'E:All_CodesWEB_DEVexcel-o-metervenvlibsite-packagesflaskapp.py', 2551행, <strong>전화</strong>
self.wsgi_app(환경, start_response) 반환
파일 "E:All_CodesWEB_DEVexcel-o-metervenvlibsite-packagesflaskapp.py", 라인 2531, wsgi_app
응답 = self.handle_Exception(e)
Wrapped_function의 파일 'E:All_CodesWEB_DEVexcel-o-metervenvlibsite-packagesflask_corsextension.py', 165행
cors_after_request(app.make_response(f(*args, **kwargs)))를 반환합니다.
파일 "E:All_CodesWEB_DEVexcel-o-metervenvlibsite-packagesflaskapp.py", 2528행, wsgi_app
응답 = self.full_dispatch_request()
파일 "E:All_CodesWEB_DEVexcel-o-metervenvlibsite-packagesflaskapp.py", 1825행, full_dispatch_request
rv = self.handle_user_Exception(e)
Wrapped_function의 파일 'E:All_CodesWEB_DEVexcel-o-metervenvlibsite-packagesflask_corsextension.py', 165행
cors_after_request(app.make_response(f(*args, **kwargs)))</p>를 반환합니다.
</인용문>
<p><strong>위에서 언급한 대로 특정 헤더를 추가해야 합니까, 아니면 Flask 측에 버그가 있습니까? </strong>
명령줄의 마지막 줄에서 CORS 오류가 발생하는 것 같습니다. </p>
사용해보고 확인해 주실 수 있나요?
방법 1
Flask-cors 설치
으아악그런 다음 애플리케이션이 초기화된 후 기본 매개변수를 사용하여 Flask-cors를 초기화합니다.
으아악업데이트
방법 2
추가 패키지를 사용하고 싶지 않다면 이렇게 해도 됩니다
으아악다음 코드를 사용하여 엔드포인트를 정의해 보시기 바랍니다
으아악대신
으아악참조 링크 - Flask http 메소드