2017-07-28 5 views
-1

ich versuche, eine POST in einen Kolben-Server mit axios zu machen:Axios, Anfrage POST Flask

var config = { headers: { 
         'Content-Type': 'application/json', 
         'Access-Control-Allow-Origin': '*'} 
      } 
axios.post("http://127.0.0.1:5000/test", 
      { label : "Test" , text : "Test"} , config 
     ) 
      .then(function (response) { 
      console.log(response); 
      }) 
      .catch(function (error) { 
      console.log(error); 
      }); 

nun den Teil der Flasche

... 
data = request.get_json(silent=True) 
item = {'label': data.get('label'), 'text': data.get('text')} 
print item 
... 

Aber ich werde mit dem folgenden Ende Fehler:

XMLHttpRequest kann http://127.0.0.1:5000/test nicht geladen werden. Die Antwort auf die Preflight-Anforderung übergibt die Zugriffskontrollprüfung nicht: Auf der angeforderten Ressource ist kein Header "Access-Control-Allow-Origin" vorhanden. Origin 'http://localhost:3000' ist daher nicht erlaubt.

Warum? I LL setze die Kopfzeile wie vorgeschlagen.

Hier ist die Lösung

from flask_cors import CORS, cross_origin app = Flask(__name__) cors = CORS(app, resources={r"/YOURAPP/*": {"origins": "*"}})

Antwort

0

Wenn noch jemand festsitzt, überprüfen Sie bitte Ihre before und after Anfrage Methoden. Mein Problem war:

@app.before_request 
def oauth_verify(*args, **kwargs): 
    """Ensure the oauth authorization header is set""" 
    if not _is_oauth_valid(): 
     return some_custome_error_response("you need oauth!") 

So dann diese eine Ausnahme auf jede Anfrage erhöhen würde, einschließlich einer OPTIONS Methode. Natürlich ist die Lösung einfach:

@app.before_request 
def oauth_verify(*args, **kwargs): 
    """Ensure the oauth authorization header is set""" 
    if request.method in ['OPTIONS', ]: 
     return 
    if not _is_oauth_valid(): 
     return some_custome_error_response("you need oauth!")