云开发接单
云开发接单
  • 发布:2022-08-31 18:51
  • 更新:2022-08-31 19:25
  • 阅读:393

网络流访问云存储报403 forbidden问题

分类:uniCloud

因为uniCloud的包限制,部分业务部署到了阿里云云函数计算FC上了
在FC上使用axios直接下载云存储的文件没有问题,但是使用ffmpeg网络流下载就会报403的错误,已经在unicloud控制台设置了FC的跨域域名(不知道阿里云FC的下载是走IP还是走默认域名)
请问这个如何解决?
使用的命令是:

ffmpeg -y -t 5 -i https://vkceyugu.cdn.bspapp.com/VKCEYUGU-4052539d-ef26-4712-bab0-883670e873c5/38a607ad-ace6-415c-99a4-dcf15e46c0bb.mp4 /tmp/test.mp3
2022-08-31 18:51 负责人:无 分享
已邀请:
云开发接单

云开发接单 (作者) - 专攻云开发,有云开发的小单子可找我

昨天ffmpeg直接请求云存储是没有问题的,不知道为什么突然今天就不行了,直接报403错误,
不知道今天是不是升级更新了,更改了策略,但却没说如何适配

  • DCloud_uniCloud_WYQ

    本地起个服务测试下ffmpeg发送的请求和axios有什么不一样

    2022-09-01 11:06

  • 云开发接单 (作者)

    回复 DCloud_uniCloud_WYQ: 因为云存储没有请求日志,因此换为ffmpeg请求oss,返回的日志如下


    {"referer":"-","content_length_in":"-","vpc_id":"0","owner_id":"1488217990696284","user_defined_log_fields":"-","bucket_storage_type":"standard","extend_information":"-","http_method":"GET","response_body_length":"261","__pack_meta__":"0|MTY2MTk1MjM2MzMxNjgxMDI5OA==|1|0","delta_data_size":"-","bucket_location":"oss-cn-hongkong-e","host":"tc-ffmpeg.oss-cn-hongkong.aliyuncs.com","client_ip":"47.106.204.209","server_cost_time":"8","vpc_addr":"236145455","sign_type":"NotSign","user_agent":"Lavf/59.29.100","object_size":"-","__time__":1661952624,"sync_request":"-","__topic__":"oss_access_log","__source__":"log_service","http_type":"https","logging_flag":"true","request_uri":"/tmp/1661880015453td_output.avi?Expires=1661955145 HTTP/1.1","bucket":"tc-ffmpeg","request_length":"207","content_length_out":"261","access_id":"-","http_status":"403","response_time":"8","error_code":"AccessDenied","time":"31/Aug/2022:21:30:24","request_id":"630F627022AAFC3135300B8A","operation":"GetObject","restore_priority":"-","requester_id":"-","object":"tmp%2F1661880015453td_output.avi","acc_access_region":"-"}

    这个请求头是不允许吗?你能不能帮我测试一下,纠结了很久

    2022-09-01 14:17

  • DCloud_uniCloud_WYQ

    回复 云开发接单: 这个看着也不像请求头,倒是像响应头。你还是本地起个服务请求一下看看吧

    2022-09-02 14:08

  • 云开发接单 (作者)

    回复 DCloud_uniCloud_WYQ: 本地ffmpeg请求也是显示403,其他信息看不到了,只显示这个

    2022-09-02 15:53

  • DCloud_uniCloud_WYQ

    回复 云开发接单: 本地ffmpeg请求本地服务,在本地服务内输出一下ffmpeg发送的网络请求的请求头

    2022-09-02 18:37

  • 云开发接单 (作者)

    回复 DCloud_uniCloud_WYQ:


    "headers": {  
    "icy-metadata": "1",
    "x5-uuid": "a031b813cfcab3c3a45a18ec1c181426",
    "x-client-ip": "106.55.29.200",
    "range": "bytes=",
    "x-forwarded-for": "106.55.29.200, 39.96.119.160",
    "accept": "*/*",
    "x-real-ip": "106.55.29.200",
    "host": "4052539d-ef26-4712-bab0-883670e873c5.bspapp.com",
    "x-forwarded-by": "172.20.8.156:80",
    "user-agent": "Lavf/59.16.100"
    }

    这是请求头

    2022-09-02 20:32

  • DCloud_uniCloud_WYQ

    回复 云开发接单: axios使用这个请求头请求一下云存储试试呢?去掉ip相关的那几个头

    2022-09-05 12:01

  • 云开发接单 (作者)

    回复 DCloud_uniCloud_WYQ:


     headers:{  
    "icy-metadata": "1",
    "x5-uuid": "a031b813cfcab3c3a45a18ec1c181426",
    "range": "bytes=",
    "accept": "*/*",
    "host": "4052539d-ef26-4712-bab0-883670e873c5.bspapp.com",
    "user-agent": "Lavf/59.16.100"
    }

    报错:


    AxiosError: write EPROTO CC1E0200:error:0A000410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:c:\ws\deps\openssl\openssl\ssl\record\rec_layer_s3.c:1584:SSL alert number 40  

    at WriteWrap.onWriteComplete [as oncomplete] (node:internal/stream_base_commons:94:16) {
    syscall: 'write',
    code: 'EPROTO',
    errno: -4046,

    使用这个请求头会报错,去掉就没事,这个请求头有什么问题吗?

    2022-09-05 17:13

  • 云开发接单 (作者)

    请求头去掉host,则报错403


      headers:{  
    "icy-metadata": "1",
    "x5-uuid": "a031b813cfcab3c3a45a18ec1c181426",
    "range": "bytes=",
    "accept": "*/*",
    "user-agent": "Lavf/59.16.100"
    },

    再把user_agent去掉

    这下才能成功

    但是ffmpeg无法设置user_agent啊,Lavf/59.16.100这样的格式不允许访问吗?

    2022-09-05 17:17

  • DCloud_uniCloud_WYQ

    回复 云开发接单: 此ua被误屏蔽了,现在再试下行不行

    2022-09-06 15:55

  • 云开发接单 (作者)

    回复 DCloud_uniCloud_WYQ: 现在可以了

    2022-09-07 09:11

该问题目前已经被锁定, 无法添加新回复