Heim  >  Fragen und Antworten  >  Hauptteil

Lösen von Problemen mit POST-Anfragen in Flask und Python

<p> <pre class="brush:php;toolbar:false;">app = Flask(__name__) CORS(App) @app.post("/api/clients/") def addClient(): data = open('./src/clients.json', 'w+') client = json.load(data) req = json.loads(request.data) client.append(req) json.dump(Clients, Daten) data.close() return req</pre> <p>但是当我在浏览器中执行这个Javascript的<code>fetch()</code> API-Status: </p> <pre class="brush:php;toolbar:false;">let u = "http://url/api/clients/n1/" sei b = { "Kunde": "n1", "Details": { "Adresse1": "Leitung1", "Adresse2": "Zeile2", "Stadt": "Stadt", "E-Mail": "@", "gst": "gstno" } } const addStudent = async (us, c) => { const Antwort = Warten auf fetch(us, { Methode: "POST", Überschriften: { „Content-Type“: „application/json“, }, Körper: c, }); const data = Warten auf Antwort.json(); console.log(data); }; addStudent(u, b);</pre> <p>浏览器控制台显示以下错误:</p> <blockquote> <p>求,请将请求的模式设置为'no-cors'以禁用CORS获取资源。</p> </blockquote> <p>Zur Referenz: Dies sind die Fehler, die in der Flask-Befehlszeile erwähnt werden: </p> <blockquote> <p>127.0.0.1 – – [26. März 2023 18:09:05] „POST /api/clients/ HTTP/1.1“ 500 – Traceback (letzter Anruf zuletzt): Datei „E:All_CodesWEB_DEVexcel-o-metervenvlibsite-packagesflaskapp.py“, Zeile 2551, <strong>Call</strong> return self.wsgi_app(environment, start_response) Datei „E:All_CodesWEB_DEVexcel-o-metervenvlibsite-packagesflaskapp.py“, Zeile 2531, in wsgi_app Antwort = self.handle_Exception(e) Datei „E:All_CodesWEB_DEVexcel-o-metervenvlibsite-packagesflask_corsextension.py“, Zeile 165, in Wrapped_Function Rückgabe cors_after_request(app.make_response(f(*args, **kwargs))) Datei „E:All_CodesWEB_DEVexcel-o-metervenvlibsite-packagesflaskapp.py“, Zeile 2528, in wsgi_app Antwort = self.full_dispatch_request() Datei „E:All_CodesWEB_DEVexcel-o-metervenvlibsite-packagesflaskapp.py“, Zeile 1825, in full_dispatch_request rv = self.handle_user_Exception(e) Datei „E:All_CodesWEB_DEVexcel-o-metervenvlibsite-packagesflask_corsextension.py“, Zeile 165, in Wrapped_Function Return cors_after_request(app.make_response(f(*args, **kwargs)))</p> </blockquote> <p><strong>Muss ich wie oben erwähnt einen bestimmten Header hinzufügen, oder liegt ein Fehler auf der Flask-Seite vor? </strong> Die letzte Zeile in der Befehlszeile scheint einen CORS-Fehler auszugeben. </p>
P粉476475551P粉476475551413 Tage vor532

Antworte allen(1)Ich werde antworten

  • P粉459578805

    P粉4595788052023-09-03 12:52:58

    你能否尝试一下并检查一下?

    方法1

    安装flask-cors

    pip install -U flask-cors

    然后在应用程序初始化之后,使用默认参数初始化flask-cors:

    from flask import Flask
     from flask_cors import CORS 
    
     app = Flask(__name__)
     CORS(app)
    
     @app.route("/")
     def helloWorld():
      return "Hello, cross-origin-world!"

    更新

    方法2

    如果你不想使用任何额外的包,你也可以这样做

    @app.route('your own route', methods=['GET'])
     def yourMethod(params):
       response = flask.jsonify({'somekey': 'somevalue'})
       # 注意:理想情况下,'*' 应该被替换为你的主机来源
       response.headers.add('Access-Control-Allow-Origin', '*') 
       return response

    我建议请尝试使用以下代码来定义你的端点

    @app.route("/api/clients/", methods=['POST'])

    而不是

    @app.post("/api/clients/")

    参考链接 - Flask http methods

    Antwort
    0
  • StornierenAntwort