2016-04-23 107 views
0

我有一個燒瓶API來控制浸入式加熱器設備。CORs請求與瓶api - Jquery POST請求結果在選項

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

這是我的本地服務器上,它如正確響應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); 
         } 
      }); 

不過,我想建立一個不同的服務器

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

在西納特拉客戶端應用程序使用相同的API進行交互。該jquery是相同的,併爲START調用工作正常,但對於TEMP調用它不起作用

在firefox的開發者控制檯,我可以看到它有OPTIONS而不是POST請求(響應200)。

最初我用我所有的api jQuery請求來跨域問題,我以爲我已經通過向我的api添加了flask cors擴展來解決了這些問題。

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

我不明白爲什麼臨時呼叫沒有工作,但其他人。我懷疑這是因爲我正在以溫度值的形式發送數據。

任何意見非常感謝。

+0

第二次電話會出現什麼錯誤? –

+0

它沒有看到給它一個錯誤,它只是不起作用 – TimK

+0

陷阱你的js中的錯誤函數或看看你的瀏覽器開發工具中調用的結果是什麼。 –

回答

1

我認爲你需要初始化CORS()讓Flask工作。

嘗試把這個在line 12 of your python server

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

您也可以矇混過關只是CORS(app)(我從來沒有用過瓶,所以我不確定)。

請參閱簡單使用下的Flask docs瞭解更多信息。