2016-04-23 14 views
0

私は浸漬式ヒーターデバイスを制御するフラスコAPIを持っています。フラスコでのCORのリクエストapi - OPTIONのJquery POSTリクエストの結果

https://github.com/timcknowles/anovapi_backend/blob/master/anova.py

これは私のlocalhostのサーバー上にあり、それは、例えば、同じドメイン上でjQueryのPOSTリクエストに正しく応答します

$(document).ready(function() { 
      $("#start").click(function() { 

        $.ajax({ 
         type: 'post', 
         url: 'http://192.168.0.13:5000/start', 
         dataType: 'jsonp', 
         success: function(data) { 
         $("#message").html(data); 
         } 


$("#settemp").click(function() { 

        $.ajax({ 
         type: 'post', 
         contentType: 'application/json', 
         url: ' http://192.168.0.13:5000/temp', 
         data: JSON. stringify ({"temp":"50"}), 
         dataType: 'json', 
         success: function(data) { 
         $("#message").html(data); 
         } 
      }); 

は、しかし、私は、同じAPIと対話するために別のサーバー

https://github.com/timcknowles/anovapi_frontend/blob/master/main.rb

にシナトラのクライアントアプリを構築したいと考えていました。 jqueryは同じで、START呼び出しで正常に動作しますが、TEMP呼び出しは機能しません。

firefoxの開発者コンソールでは、POST要求(応答200)ではなくOPTIONSが表示されています。

最初はすべてのapi jQueryリクエストにクロスドメインの問題があり、私はapiにフラスコcors拡張子を追加して解決したと思いました。

https://pypi.python.org/pypi/Flask-Cors

一時呼び出しが動作していないが、他の人がしている理由を私は理解していません。私はそれが温度値の形でデータを送信しているからだと思う。

大変ありがとうございます。

+0

2番目の呼び出しでエラーは何ですか? –

+0

それはちょうどうまくいかないエラーを表示していません – TimK

+0

あなたのjsのエラー関数をトラップするか、呼び出しの結果がブラウザの開発者ツールにあるかを確認してください。 –

答えて

1

Flaskが機能するためにはCORS()を初期化する必要があると思います。

line 12 of your python serverでこれを入れてみてください:

cors = CORS(app, resources={r"/*": {"origins": "*"}}) 

あなたはまた、単にCORS(app)(私はので、私はわからないんだフラスコを使用したことがありません)で逃げるかもしれません。

詳細については、簡易使用法のFlask docsを参照してください。

関連する問題