【问题标题】:"Invalid State" after Vimeo API deleteVimeo API 删除后的“无效状态”
【发布时间】:2016-04-14 08:25:53
【问题描述】:

希望有人可以提供帮助。我正在使用 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 也被难住了。我将不得不找到另一个 jQuery 上传脚本或只使用普通的旧浏览按钮:(
  • 同样的问题在这里解决了:http://stackoverflow.com/a/38793105/785819希望对您有所帮助!

标签: php curl vimeo dropzone.js vimeo-api


【解决方案1】:

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

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

您的回复与我下面的类似 - 如果您的上传脚本在您的后端已获得票证后尝试获得票证,则会像在我的代码中一样弹出此问题。

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

我的解决方案: 我解决了我的问题版本 - 我认为 Vimeo 最近更正了他们 API 上的一些东西,因为我的代码没有错误,然后最近突然出现了一个错误。我敢打赌,他们在 API 网关上添加了速率限制,或者可能会覆盖现有请求以清理旧请求...

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

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

除了通过我的 PHP 后端上传之外,我什么都做。我正在通过 PHP 请求一张票,以不通过我修改后的 JS 前端 (github.com/websemantics/vimeo-upload) 公开一些秘密信息,但我没有通过 JS 代码正确编辑出票请求,所以当前的错误可能是在那一秒触发的无效请求(即通过 PHP 覆盖或限制我的初始有效请求)。一旦我正确绕过了 JS 的“上传”功能并直接跳转到 JS 的“sendFile_”,上传又可以正常工作了。

希望能帮助到那里的人!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多