2017-07-09 10 views
2

私はPythonでできる最も簡単な残りのAPIを取得しようとしていますが、問題があります。私は何が間違っているのか分かりませんが、CORSと何か関係があると思います。この問題を解決するためにflask_corsパッケージを使用していて、動作していないように見えるので、これはイライラしています。私のmain.pyファイルでPython/Flask Rest APIがプリフライトをCORSに渡していません

私は私が私のフォルダ構造としてこれを持っている私のプロジェクトのために

from flask import Flask 
from flask_cors import CORS, cross_origin 

app = Flask(__name__) 
CORS(app) 

import routes.login 

if __name__ == '__main__': 
    app.run(debug=True) 

次き:

main.py 
__init__.py 
routes 
    __init__.py 
    login.py 

を、私はlogin.py

に次のコードを持っています
from flask import Flask 
from flask_cors import CORS, cross_origin 

from main import app 
CORS(app) 

@app.route('/login', methods=['POST', 'GET']) 
@cross_origin() 
def login(name, password): 
    if request.method == 'POST': 
     print('inside login POST') 
    if request.method == 'GET': 
     print('inside login GET') 

現在、このエラーが発生しています:

xhr.js:178 OPTIONS http://localhost:5000/login 404 (NOT FOUND) 
dispatchXhrRequest @ xhr.js:178 
xhrAdapter @ xhr.js:12 
dispatchRequest @ dispatchRequest.js:52 
:3000/pictureswapper:1 XMLHttpRequest cannot load http://localhost:5000/login. 
Response for preflight has invalid HTTP status code 404 

何らかのCORSエラーがありますが、実際に何がうまくいかないのか分かりません。何か案は?

EDIT:プリフライトについての説明が書かれている唯一の場所は、ここにあります(https://flask-cors.readthedocs.io/en/v1.3.1/index.html?highlight=preflight)。追加した場合

@cross_origin(headers=['Content-Type']) # Send Access-Control-Allow-Headers 

これはアプリケーションを中断しませんが、エラーを修正しません。

+0

私はまた、ここで使用されているメソッドを使用しようとしました:http://flask.pocoo.org/snippets/56/、このstackoverflowの回答で参照されています:https://stackoverflow.com/questions/22181384/javascript -no-access-control-allow-origin-header-は要求時に存在し、どちらも動作していないようです。同じエラー。 –

+0

最初にブラウザのアドレスバーでURLを試したことがありますか? –

答えて

1

数ヶ月後にこれを再訪します。

python /フラスコの厄介な問題の1つは、コンパイルされたコードがキャッシュに格納されるようです。そのため、アプリケーションのエントリポイント(main.py)で何かを変更し、フラスコの輸出はフラスコの輸出を実行し、再コンパイルするたびに古いコードを使用している可能性があります。

奇妙な出力が表示されている場合は、これらのファイルを削除するようにしてください(アトムは紫色の1/1ファイルです。

0

ルートデコレータのメソッドキーワードにOPTIONSを追加するか、そのキーワードを完全に削除します。

+1

Flaskは自動的に 'OPTIONS'を追加します。 – davidism

+0

はい、私はそれを試みました、そして、それは同じエラーを与えます。 –

関連する問題