"Недопустимое состояние" после удаления Vimeo API
Надеюсь, кто-то может помочь... Я использую 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>
CURL DELETE:
<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>
1 ответ
Я только что ответил на ту же проблему на форуме Vimeo, и еще одну ветку SO, которую я прочитал - у меня была та же проблема, и я просто публикую ее здесь, так как в этой конкретной ветке решения, похоже, не было.
Кроме того, что касается вашего сообщения - в вашем сообщении не так много информации. Ваш запрос на удаление - это еще не все. Предполагается, что вы создали действительный запрос на получение билета, загружены должным образом, а затем попытались опубликовать запрос на удаление.
Ваш ответ похож на мой ниже - если ваш скрипт загрузки попытался получить билет ПОСЛЕ того, как вы уже получили его на своем бэкэнде, эта проблема всплывет, как и в моем коде.
Сообщение Vimeo: https://vimeo.com/forums/api/topic:278394
Мое решение: я решил свою версию проблемы - я думаю, что Vimeo недавно исправил некоторые вещи в их API, потому что в моем коде не было ошибки, а затем неожиданно появилась недавно. Могу поспорить, что они добавили ограничение скорости на своем API-шлюзе или, возможно, перезаписали существующие запросы для очистки старых запросов...
Во всяком случае, вот мое исправление:
Чтобы завершить загрузку видео через "Возобновляемые загрузки HTTP PUT" ( http://developer.vimeo.com/api/upload/videos), необходимо выполнить 5 шагов.
Я делаю все, кроме загрузки через мой бэкэнд PHP. Я запрашивал билет через PHP, чтобы не показывать некоторую секретную информацию через мой измененный интерфейс JS ( http://github.com/websemantics/vimeo-upload), но я не отредактировал запрос билета должным образом через код JS, поэтому текущая ошибка была возможно, он был запущен во втором недопустимом запросе (т. е. при перезаписи или ограничении скорости моего первоначального допустимого запроса через PHP). Как только я правильно обошел JS-функцию загрузки и перешел прямо к JS-файлу sendFile_, загрузка снова работает правильно.
Надеюсь, это поможет кому-то там!