使用 flask api 的 COR 请求 - Jquery POST 请求结果在 OPTION 中
CORs request with flask api - Jquery POST request results in OPTIONs
我有一个烧瓶 API 来控制浸入式加热器设备。
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);
}
});
但是我想在不同的服务器上构建一个 sinatra 客户端应用程序
https://github.com/timcknowles/anovapi_frontend/blob/master/main.rb
与同一个 api 互动。 jquery 是相同的并且对于 START 调用工作正常但是对于 TEMP 调用它不起作用
在 firefox 的开发者控制台中,我可以看到它有选项而不是 POST 请求(响应 200)。
最初我的所有 api jQuery 请求都存在跨域问题,我认为我已经通过将 flask cors 扩展添加到我的 api.[=17= 来解决这些问题]
https://pypi.python.org/pypi/Flask-Cors
我不明白为什么临时调用不起作用,但其他调用却起作用。我怀疑这是因为我正在以温度值的形式发送数据。
非常感谢任何建议。
我认为您需要初始化 CORS() 才能使 Flask 工作。
试试把这个放在 line 12 of your python server:
cors = CORS(app, resources={r"/*": {"origins": "*"}})
您也可能只需要 CORS(app)
(我从未使用过 Flask,所以不确定)。
有关详细信息,请参阅“简单用法”下的 Flask docs。
我有一个烧瓶 API 来控制浸入式加热器设备。
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);
}
});
但是我想在不同的服务器上构建一个 sinatra 客户端应用程序
https://github.com/timcknowles/anovapi_frontend/blob/master/main.rb
与同一个 api 互动。 jquery 是相同的并且对于 START 调用工作正常但是对于 TEMP 调用它不起作用
在 firefox 的开发者控制台中,我可以看到它有选项而不是 POST 请求(响应 200)。
最初我的所有 api jQuery 请求都存在跨域问题,我认为我已经通过将 flask cors 扩展添加到我的 api.[=17= 来解决这些问题]
https://pypi.python.org/pypi/Flask-Cors
我不明白为什么临时调用不起作用,但其他调用却起作用。我怀疑这是因为我正在以温度值的形式发送数据。
非常感谢任何建议。
我认为您需要初始化 CORS() 才能使 Flask 工作。
试试把这个放在 line 12 of your python server:
cors = CORS(app, resources={r"/*": {"origins": "*"}})
您也可能只需要 CORS(app)
(我从未使用过 Flask,所以不确定)。
有关详细信息,请参阅“简单用法”下的 Flask docs。