Я работаю над веб-приложением PHP, которое принимает большие ОТПРАВЛЕННЫЕ загрузки файла от определенных клиентов и хотело бы принять или отклонить эти загрузки (на основе различных заголовков и других факторов, не только размера), прежде чем файл будет загружен при помощи HTTP/1.1 100, Продолжаются.
Некоторый быстрый фон от спецификации 8.2.3 HTTP/1.1:
Цель 100 состояний (Continue) (см. раздел 10.1.1) состоит в том, чтобы позволить клиенту, который отправляет сообщение запроса с телом запроса, чтобы определить, готов ли сервер источника принять запрос (на основе заголовков запроса), прежде чем клиент отправит тело запроса. В некоторых случаях это могло бы или быть несоответствующим или очень неэффективным, чтобы клиент отправил тело, если сервер отклонит сообщение, не смотря на тело.
Проблема состоит в том, что Apache видит Ожидание: 100 - продолжаются от клиента, возвращается, 100 Продолжаются, и признает, что файл загружает все, прежде чем PHP начнет обрабатывать... Однако мне нужен PHP, чтобы начать обрабатывать сразу после Ожидания: 100 - продолжаются. Я не уверен, возможно ли это, таким образом, у меня есть два вопроса:
Я в настоящее время думаю об эмуляции 100, продолжаются путем определения, что клиент сначала отправляет ГЛАВНЫЙ запрос с теми же заголовками как POST. Веб-приложение может тогда возвратить ответ, чтобы продолжить POST или код ошибки. Другие предложения приветствуются!
Попытка сделать это на уровне HTTP кажется слишком сложной. Как разработчику важно не зацикливаться на конкретном решении. Проблема в том, что вы хотите выполнить серию проверок, прежде чем обрабатывать загрузку. Все, что вам нужно сделать, это поместить соответствующую страницу перед загрузкой. Эта квалификационная страница покажет им форму загрузки только в том случае, если они пройдут серию проверок и соответствуют требованиям. Это именно то, что вы пытаетесь сделать, только вы можете сделать это в коде PHP. Если это возможно, HTTP 100 всегда будет требовать большого количества дополнительных настроек, что создаст головную боль для поддержки в дальнейшем. Если вы сделаете это в коде, те, кто придет за вами (или вы сами через пару лет), смогут четко понять, что делает приложение.