Selesaikan masalah permintaan POST dalam Flask dan Python
P粉476475551
2023-09-02 14:08:47
<p>我正在编写一个Flask的POST请求处理程序来添加一个CLIENT。</p>
<pre class="brush:php;toolbar:false;">app = Flask(__name__)
CORS(apl)
@app.post("/api/clients/")
def addClient():
data = open('./src/clients.json', 'w+')
pelanggan = json.load(data)
req = json.loads(request.data)
clients.append(req)
json.dump(pelanggan, data)
data.close()
return req</pre>
<p>但是当我在浏览器中执行这个Javascript的<kod>fetch()</code> API时:</p>
<pre class="brush:php;toolbar:false;">let u = "http://url/api/clients/n1/"
biarkan b = {
"pelanggan": "n1",
"butiran": {
"alamat1": "Baris1",
"alamat2": "line2",
"bandar": "bandar",
"e-mel": "@",
"gst": "gstno"
}
}
const addStudent = async (kami, c) => {
respons const = tunggu ambil(kami, {
kaedah: "POST",
tajuk: {
"Jenis Kandungan": "aplikasi/json",
},
badan: c,
});
data const = menunggu respons.json();
console.log(data);
};
addStudent(u, b);</pre>
<p>浏览器控制台显示以下错误:</p>
<blockquote>
<p>访问'url/api/clients/'的fetch被阻止了,因为源'null'没有'Access-Control-Allow-Origin'头。如果一个不透的源'null'没有'Access-Control-Allow-Origin'头。如果一个不透的一个不透的源请将请求的模式设置为'no-cors'以禁用CORS获取资源。</p>
</blockquote>
<p>Sebagai rujukan, ini ialah ralat yang disebut dalam baris arahan Flask: </p>
<blockquote>
<p>127.0.0.1 - - [26 Mac 2023 18:09:05] "POST /api/clients/ HTTP/1.1" 500 -
Traceback (panggilan terbaharu terakhir):
Fail 'E:All_CodesWEB_DEVexcel-o-metervenvlibsite-packagesflaskapp.py', talian 2551, <strong>Call</strong>
kembalikan self.wsgi_app(environment, start_response)
Fail "E:All_CodesWEB_DEVexcel-o-metervenvlibsite-packagesflaskapp.py", baris 2531, dalam wsgi_app
respons = self.handle_exception(e)
Fail 'E:All_CodesWEB_DEVexcel-o-metervenvlibsite-packagesflask_corsextension.py', baris 165, dalam wrapped_function
Kembalikan cors_after_request(app.make_response(f(*args, **kwargs)))
Fail "E:All_CodesWEB_DEVexcel-o-metervenvlibsite-packagesflaskapp.py", baris 2528, dalam wsgi_app
respons = self.full_dispatch_request()
Fail "E:All_CodesWEB_DEVexcel-o-metervenvlibsite-packagesflaskapp.py", baris 1825, dalam full_dispatch_request
rv = self.handle_user_exception(e)
Fail 'E:All_CodesWEB_DEVexcel-o-metervenvlibsite-packagesflask_corsextension.py', baris 165, dalam wrapped_function
Kembalikan cors_after_request(app.make_response(f(*args, **kwargs)))</p>
</blockquote>
<p><strong>Adakah saya perlu menambah pengepala khusus seperti yang dinyatakan di atas, atau adakah saya mengalami pepijat pada bahagian Flask? </strong>
Baris terakhir dalam baris arahan nampaknya memberikan ralat CORS. </p>
Bolehkah anda mencubanya dan menyemaknya?
Kaedah 1
Pasang flask-cors
Kemudian selepas aplikasi dimulakan, mulakan flask-cors dengan parameter lalai:
Dikemas kini
Kaedah 2
Jika anda tidak mahu menggunakan sebarang pakej tambahan, anda juga boleh melakukannya
Saya cadangkan sila cuba gunakan kod berikut untuk menentukan titik akhir anda
bukannya
Pautan rujukan - Kaedah http flask