HTTP, являющийся протоколом без сохранения состояния, единственный способ «поддерживать сеансы в живых» - предоставить идентификатор сеанса в строке запроса или, хотя и включить файлы cookie, которые были возвращены как часть первого аутентифицирующего запроса.
Это типичная парадигма для пользователя, который обращается к веб-приложению через веб-браузер или даже в cURL.
Большинство API, начиная с дней SOAP и до настоящего времени, настроены по-разному. Они вас аутентифицируют с каждым запросом. Просто более практично с тем, как они используются ... из серверного кода или со стороны клиента Xhr.
Например, аутентификация с использованием токенов JWT является распространенным подходом в наши дни. Вы можете предоставить URI с подписанным токеном конечному пользователю, и вам не придется беспокоиться о возможных атаках воспроизведения.
Я думаю, что вместо того, чтобы пытаться объяснить, вам следует прочитать эту прекрасную статью: http://shiflett.org/articles/the-truth-about-sessions
В PHP много чего происходит, когда дело доходит до sessions
и cookies
- стоит проверить раздел в руководстве, который касается настроек INI, связанных с этими двумя.
ОК, значит API - это правильный PHP-код ...?
session_start () создает сеанс или возобновляет текущий на основе
идентификатор сеанса, переданный через запрос GET или POST, или переданный через
печенье.
Хорошим первым шагом может быть отправка запроса в API через веб-браузер, а затем поиск ответа, видите ли вы файлы cookie, отправляемые сервером?
При последующих запросах к API вы видите, что эти куки используются - и мы предполагаем, что вы не просите вас повторно пройти аутентификацию? Это суть этого. Опять же, в зависимости от характера сеансов, основанных на файлах cookie, API может оказаться не лучшим подходом.
Итак, похоже, что поддержка cookie была добавлена в используемую вами оболочку HTTP ... https://github.com/tmenier/Flurl/issues/14
Возможно, более нативный подход? Борьба с попыткой получить cookie из ответа с помощью HttpClient в .net 4.5