将客户端请求转换为对自定义高图节点导出服务器的正确请求

Convert client requests to proper requests for custom highchart node export server

我正在尝试通过自定义节点导出服务器导出图像。服务器是 运行,当我直接向服务器发送请求时一切正常。

    exporting: {
    url: "http://ip:7779"
},

但出于某些安全原因,首先我需要向我的烧瓶服务器发送请求,我检查了传入的请求,它包含以下值:

CombinedMultiDict([ImmutableMultiDict([]), ImmutableMultiDict([('width', u'0'), ('scale', u'2'), ('type', u'image/png'), ('filename', u'chart'), ('svg', u'<svg xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" class="highcharts-root" ...omited!')])

内容类型类似于 multipart/form-data; boundary=----WebKitFormBoundaryt7Gcilm12pNBmSab

所以我更改了我的代码:

    url: "/highchart"
},
@app.route('/highchart', methods=["GET", "POST"])
@login_required
def highchart_export():
    try:
        data = {}
        for i in request.values:
            data[i] = request.values[i]
        response = requests.post('http://0.0.0.0:7779',data=data)
        return response.text, response.status_code, response.headers.items()
    except:
        print traceback.format_exc(sys.exc_info())

但它不起作用。我刚收到一张图片,上面有文字“我们似乎不支持这种文件格式。

我的代码中似乎缺少一些 headers 和 body 的一部分,因此为了进行干净的重定向,我使用了以下代码:

response = requests.request(
    method=request.method,
    url='http://127.0.0.1:7779',
    headers={key: value for (key, value) in request.headers},
    data=request.get_data(),
    cookies=request.cookies,
    allow_redirects=False)
headers = [(name, value) for (name, value) in response.raw.headers.items()]
return Response(response.content, response.status_code, headers)

现在输出正常了。