gpt4 book ai didi

python - 启用 CORS 的 Flask restful api 不适用于远程 ajax 调用

转载 作者:太空宇宙 更新时间:2023-11-04 05:53:39 25 4
gpt4 key购买 nike

我有一个 Flask 应用程序,其中有一个我试图通过远程服务器调用的 RESTful API。

初始化文件:-

from flask.ext import restful
from flask.ext.cors import CORS

app = create_app(__name__)
app.config['CORS_HEADERS'] = 'Content-Type'
cors = CORS(app, resorces={r'/d/<string:d_name>': {"origins": '*'}})
api=restful.Api(app)
api.add_resource(g_Api, '/g/<string:g_id>')
api.add_resource(d_Api, '/d/<string:d_name>')

现在 d_Api 类:-

from flask import Flask, render_template, g
from flask.ext.restful import reqparse, abort, Api, Resource
def abort_if_not_exist(d_name):
return d_name

class d_Api(Resource):
def __init__(self):
self.d=d

def get(self, d_name):
val=abort_if_not_exist(d_name)
return val

这在同一个本地主机服务器上运行良好,返回正确的结果。在 localhost 上运行的服务器有一个对 api 的 ajax 调用,

$.ajax({
async: false,
type: 'GET',
url: 'http://localhost:8080/d/'+d_name,
success: function(data) {
alert(data);
}
});

当从远程主机调用时不返回任何响应,而是在 Firefox 中我得到 Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource d 。这可以通过将资源移动到同一域或启用 CORS 来解决。

我不确定如何为这个 api 端点配置 CORS。我正在使用 python 2.6 和“flask-cors”。

我发现了这种差异:当我尝试从本地主机访问 api - 2015-03-09 11:40:35 - Flask-Cors:385 - INFO - 来自 Origin:xyz-ld2 的 CORS 请求。 abc.biz:8080, 设置 Access-Control-Allow-Origin:*当我尝试从远程主机访问 api 时:2015-03-09 11:47:15 - Flask-Cors:385 - INFO - 来自 Origin:None 的 CORS 请求,设置 Access-Control-Allow-Origin: *

最佳答案

问题出在资源定义上,您只能对资源使用正则表达式您需要这样的东西或任何其他有效的正则表达式:

cors = CORS(app, resorces={r'/d/*': {"origins": '*'}})

关于python - 启用 CORS 的 Flask restful api 不适用于远程 ajax 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28911342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com