0

浸漬ヒーター デバイスを制御するためのフラスコ API があります。

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);
                      }
            });

ただし、別のサーバーでsinatraクライアントアプリを構築したかった

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

同じ API と対話します。jquery は同一であり、START 呼び出しでは正常に機能しますが、TEMP 呼び出しでは機能しません。

firefox の開発者コンソールでは、POST 要求 (応答 200) の代わりに OPTIONS があることがわかります。

最初に、すべての API jQuery リクエストでクロス ドメインの問題が発生しましたが、フラスコの cors 拡張機能を API に追加することでこれらの問題を解決したと考えていました。

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

一時呼び出しが機能しない理由がわかりませんが、他の呼び出しは機能します。温度値の形式でデータを送信しているためだと思われます。

どんなアドバイスでも大歓迎です。

4

1 に答える 1

1

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

これをpythonサーバーの12行目に入れてみてください:

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

あなたはただ逃げるかもしれませんCORS(app)(Flaskを使ったことがないのでわかりません)。

詳細については、Simple UsageのFlask ドキュメントを参照してください。

于 2016-04-23T15:51:58.110 に答える