Я работаю над PHP webapp, который принимает большие POSTed загрузки файлов с определенных клиентов и хотел бы принять или отклонить эти загрузки (на основе разных заголовков и других факторов, а не только размера), прежде чем файл будет загружен с помощью HTTP/1.1 100 Продолжить.
Немного быстрый фон из HTTP/1.1 spec 8.2.3:
Цель статуса 100 (Продолжить) (см. раздел 10.1.1) - разрешить клиенту, который отправляет сообщение запроса с органом запроса, чтобы определить, желает ли исходный сервер принять запрос (на основе заголовки запроса), прежде чем клиент отправит тело запроса. В некоторых случаях он может быть либо неуместным, либо очень неэффективным для клиента, чтобы отправить тело, если сервер отклонит сообщение, не глядя на тело.
Проблема в том, что Apache видит Expect: 100-continue от клиента, возвращает 100 Continue и принимает загрузку файла до того, как PHP начнет обрабатывать... Однако мне нужно, чтобы PHP начал обрабатывать сразу после Expect: 100- Продолжать. Я не уверен, что это возможно, поэтому у меня есть два вопроса:
- Можно ли заставить PHP начать обработку сразу после Expect: 100-continue?
- Если нет, то какая хорошая альтернатива?
В настоящее время я думаю об эмулировании 100, указав, что клиент сначала отправляет запрос HEAD с теми же заголовками, что и POST. Затем Webapp может вернуть ответ, чтобы продолжить работу с POST или кодом ошибки. Другие предложения приветствуются!