问题描述
背景:
我已经在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
注意:
- 没有CORS问题,因为所有文件和REST调用(包括 Flutter HTML文件)均通过同一HAProxy服务器提供。
- HAProxy是SSL终止符。
- CURL请求按预期方式工作。
- 通过HAProxy进行的所有其他REST调用均按预期方式工作。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)