在 Python Flask 应用程序中发送对 OPTIONS 的响应

liv*_*hak 5 python http flask

我有一个 python Flask 侦听器在端口 8080 上等待。我希望另一个进程对这个端口进行一系列 POST。侦听器的代码如下。

#!/usr/bin/env python2
from __future__ import print_function
from flask import Flask, request
from werkzeug import secure_filename
from datetime import datetime
import os, traceback, sys 
import zlib
import ssl 
import json
import os
import base64

app = Flask('__name__')

@app.route('/',methods=['GET','POST','OPTIONS'])                                                                                                                                         
def recive_fe_events():
    try:
        data = request.get_data()

        if request.content_length < 20000 and request.content_length != 0:
            filename = 'out/{0}.json'.format(str(datetime.now()))
            with open(filename, 'w') as f:
                 f.write(data)

            print('Wrote', filename)
        else:
            print("Request too long", request.content_length)
            content = '{{"status": 413, "content_length": {0}, "content": "{1}"}}'.format(request.content_length, data)
            return content, 413 
    except:
        traceback.print_exc()
        return None, status.HTTP_500_INTERNAL_SERVER_ERROR

    return '{"status": 200}\n'

if __name__ == '__main__':
    app.run(host='0.0.0.0',debug=False,port=8080)
Run Code Online (Sandbox Code Playgroud)

但是,每当我尝试触发要推送到上述侦听器的事件时。似乎我得到的OPTIONS不是POST.

192.168.129.75 - - [20/May/2015 14:33:45] "OPTIONS / HTTP/1.1" 200 -
192.168.129.75 - - [20/May/2015 14:33:45] "OPTIONS / HTTP/1.1" 200 -
192.168.129.75 - - [20/May/2015 14:33:51] "OPTIONS / HTTP/1.1" 200 -
192.168.129.75 - - [20/May/2015 14:33:51] "OPTIONS / HTTP/1.1" 200 -
Run Code Online (Sandbox Code Playgroud)

对我的客户的调查显示,它希望在其responseto 中包含以下标志OPTIONS

Access-Control-Allow-Origin          value_1
Access-Control-Allow-Methods         value_2      
Access-Control-Allow-Headers         value_3
Run Code Online (Sandbox Code Playgroud)

如何格式化上述内容responseOPTIONS以便我的服务器可以开始接收POST来自客户端的消息。

nat*_*ill 4

您需要设置 CORS 应用程序。最简单的是使用Flask-CORS