";无效状态”;在删除Vimeo API之后


"Invalid State" after Vimeo API delete

希望有人能帮忙。。我使用jQuery dropzone.js上传视频,我可以很好地上传视频,但我不能"完成"这个过程,所以视频总是处于处理/上传状态。我正在根据Vimeo API文档执行正确的过程。这里有一些标题/响应,如果它们有帮助的话,我已经用xxxx:替换了一些值

上传请求头:

PUT /upload?ticket_id=xxxx&video_file_id=514311645&signature=acd2a6c4ba8c147651604793b081e053&v6=1 HTTP/1.1
Host: 1511923755.cloud.vimeo.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0 FirePHP/0.7.4
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: video/mp4
Referer: http://local.xxxx.co.uk/vimeo
Content-Length: 29158540
Origin: http://local.xxxx.co.uk
x-insight: activate
Connection: keep-alive

上传响应标头:

HTTP/1.1 200 OK
Server: Vimeo/1.0
Content-Type: text/plain
Access-Control-Allow-Origin: *
Timing-Allow-Origin: *
Access-Control-Expose-Headers: Range
Access-Control-Allow-Headers: Content-Type, Content-Range,  X-Requested-With
X-Requested-With: XMLHttpRequest
Access-Control-Allow-Methods: POST, PUT, GET, OPTIONS
Content-Length: 0
Connection: close
Date: Thu, 14 Apr 2016 08:05:19 GMT
X-Backend-Server: kopiluwak

上传响应:

<pre>Array
(
    [body] => 
    [status] => 308
    [headers] => Array
        (
            [] => 
            [HTTP/1.1 308 Resume Incomplete] => 
            [Server] => Vimeo/1.0
            [Content-Type] => text/plain
            [Access-Control-Allow-Origin] => *
            [Timing-Allow-Origin] => *
            [Access-Control-Expose-Headers] => Range
            [Access-Control-Allow-Headers] => Content-Type, Content-Range,  X-Requested-With
            [X-Requested-With] => XMLHttpRequest
            [Access-Control-Allow-Methods] => POST, PUT, GET, OPTIONS
            [Content-Length] => 0
            [Connection] => close
            [Range] => bytes=0-29158540
            [Date] => Thu, 14 Apr 2016 08
            [X-Backend-Server] => kopiluwak
        )
)
</pre>

卷曲删除:

<pre>Array
(
    [47] => 1
    [10036] => DELETE
    [10015] => 
    [10023] => Array
        (
            [0] => Accept: application/vnd.vimeo.*+json; version=3.2
            [1] => User-Agent: vimeo.php 1.0; (http://developer.vimeo.com/api/docs)
            [2] => Authorization: Bearer xxxx
        )
)
</pre>

DELETE的响应:

<pre>Array
(
    [body] => Array
        (
            [error] => Invalid state
        )
    [status] => 500
    [headers] => Array
        (
            [Server] => nginx
            [Content-Type] => application/vnd.vimeo.error+json
            [Cache-Control] => no-cache, max-age=315360000
            [Strict-Transport-Security] => max-age=15120000; includeSubDomains; preload
            [Expires] => Sun, 12 Apr 2026 08
            [Accept-Ranges] => bytes
            [Via] => 1.1 varnish
            [Fastly-Debug-Digest] => 771e16bfeec90f734db73b1b0ee67af1dae1f86d0e6c56d4585eb9958a1684b7
            [Content-Length] => 25
            [Date] => Thu, 14 Apr 2016 08
            [Connection] => keep-alive
            [X-Served-By] => cache-iad2138-IAD, cache-lcy1126-LCY
            [X-Cache] => MISS, MISS
            [X-Cache-Hits] => 0, 0
            [X-Timer] => S1460621123.195320,VS0,VE593
            [Vary] => Accept,Vimeo-Client-Id,Accept-Encoding
        )
)
</pre>

我刚刚在Vimeo论坛上回复了同一个问题,我读到了另一个SO线程-我也有同样的问题,只是把它发布在这里,因为这个特定线程似乎没有解决方案。

此外,关于你的帖子,你的帖子中没有提供太多信息。您的删除请求并不是所需的全部——假设您创建了一个有效的票证请求,并正确上传,然后尝试了您发布的del请求。

你的回应与我的类似——如果你的上传脚本在你的后端已经收到一张票后试图获得一张票,这个问题会像我的代码中那样弹出。

Vimeo帖子:https://vimeo.com/forums/api/topic:278394

我的解决方案:我解决了这个问题——我认为Vimeo最近纠正了他们API上的一些东西,因为我的代码没有bug,然后最近突然出现了一个bug。我敢打赌,他们在API网关上增加了速率限制,或者可能覆盖现有请求以清除旧请求。。。

无论如何,这是我的解决方案:

为了通过"可恢复的HTTP PUT上传"(developer.vimeo.com/api/upload/videos)完成视频上传,有5个步骤。

除了通过PHP后端上传外,我什么都做。我通过PHP请求票证,以免通过我修改后的JS前端(github.com/websematics/vimeo-upload)暴露一些秘密信息,但我没有通过JS代码正确编辑出票证请求,所以当前的错误可能是在第二个无效请求上触发的(即覆盖或限制我通过PHP的初始有效请求的速率)。一旦我正确绕过JS"上传"功能,直接跳到JS"sendFile_",上传就可以正常工作了。

希望这能帮助到外面的人!