2016-04-23 119 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了解更多信息。