阿小信大人的头像
做你说过的,说你能做的 阿小信大人

flask处理ajax跨域请求2015-09-11 18:31

前后端的分离不得不涉及到ajax请求的跨域问题。

前端在发起ajax请求时,浏览器会先发一个options请求来试探后端,如果response headers里面的信息允许这个请求才会进行接下来真实的请求。

一般的跨域问题只需在response headers中设置Access-Control-Allow-Origin为指定的域名或者*就能解决,如:

headers = {"Access-Control-Allow-Origin": "*"}
return Response(json_dumped, mimetype='application/json', headers=headers)

如果这样不能解决,那么就需要处理options请求了,比如在ajax中需要上传指定的header,就必须处理options

首先修改headers:

headers = {"Access-Control-Allow-Origin": "*",
                  "Access-Control-Allow-Headers":
                  "Origin, X-Requested-With, Content-Type, Accept, X-ID, X-TOKEN, X-ANY-YOUR-CUSTOM-HEADER",
                  "Access-Control-Allow-Methods": "POST, PUT, GET, OPTIONS, DELETE"}

所有自定义的header都要加到其中哦。

然后在视图函数的methods参数添加OPTIONS方法

@user_api.route('/examed', methods=['POST', 'OPTIONS'])
def f():
     if request.method == 'OPTIONS':
         return Response(SUCCESS, mimetype='application/json', headers=headers)

当请求为OPTIONS时,直接返回带有headers的response就解决了。

如果您觉得从我的分享中得到了帮助,并且希望我的博客持续发展下去,请点击支付宝捐赠,谢谢!

若非特别声明,文章均为阿小信的个人笔记,转载请注明出处。文章如有侵权内容,请联系我,我会及时删除。

#Python#   #flask
分享到:
阅读[3139] 评论[0]

你可能也感兴趣的文章推荐

本文最近访客

发表评论