通过HAProxy从flutter到IPFS的REST调用不起作用

问题描述

背景:

我已经在HAProxy服务器后面设置了IPFS服务器。 我编写了Flutter客户端,以通过代理连接到此IPFS服务器并添加文件

问题:

当我将Flutter客户端作为桌面应用程序运行(在Macos上)时,一切正常,但是当我将Flutter客户端作为Web应用程序运行时,出现403错误

详细信息:

成功调用的标头(通过tcpdump捕获)如下:

REQUEST:
POST /api/v0/add HTTP/1.1
Host: po.segito.net
User-Agent: Dart/2.11 (dart:io)
Accept-Encoding: gzip
Content-Type: multipart/form-data; boundary=dart-http-boundary-fmjPP-TIwnDcY7pJGniid4grt9mdDADtazmb7Pm8sP_PRJkV1oY
Content-Length: 39611

--dart-http-boundary-fmjPP-TIwnDcY7pJGniid4grt9mdDADtazmb7Pm8sP_PRJkV1oY
content-type: application/octet-stream
content-disposition: form-data; name="asset"

RESPONSE:
HTTP/1.1 200 OK
Access-Control-Allow-Headers: X-Stream-Output,X-Chunked-Output,X-Content-Length
Access-Control-Expose-Headers: X-Stream-Output,X-Content-Length
Content-Type: application/json
Server: go-ipfs/0.6.0
Trailer: X-Stream-Error
vary: Origin
X-Chunked-Output: 1
Date: Sat,07 Nov 2020 09:48:28 GMT
transfer-encoding: chunked

未成功调用的标头如下:

REQUEST:
POST /api/v0/add HTTP/1.1
Host: po.segito.net
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:82.0) Gecko/20100101 Firefox/82.0
Accept-Encoding: gzip,deflate,br
Content-Type: multipart/form-data; boundary=dart-http-boundary-HvcRoK0lGd4+oahuNaOejbIBd-cID5+0n3GFvwwOY4ZqfitRP1s
Content-Length: 39611

--dart-http-boundary-HvcRoK0lGd4+oahuNaOejbIBd-cID5+0n3GFvwwOY4ZqfitRP1s
content-type: application/octet-stream
content-disposition: form-data; name="asset"

RESPONSE:
HTTP/1.1 403 Forbidden
Content-Type: text/plain; charset=utf-8
vary: Origin
X-Content-Type-Options: nosniff
Date: Sat,07 Nov 2020 09:38:55 GMT
Content-Length: 16

403 - Forbidden

注意:

  1. 没有CORS问题,因为所有文件和REST调用包括 Flutter HTML文件)均通过同一HAProxy服务器提供。
  2. HAProxy是SSL终止符。
  3. CURL请求按预期方式工作。
  4. 通过HAProxy进行的所有其他REST调用均按预期方式工作。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...