получаю другой php идентификатор сеанса каждый запрос, который я делаю. angular передний конец - PullRequest
0 голосов
/ 14 января 2020

Итак, у меня есть PHP на сервере и мое приложение angular локально. за каждый мой запрос я получаю другой идентификатор сеанса PHP на вкладке сети. Из-за этого я не могу проверить мой сессионный повар ie, так как он не существует. Когда я связываю приложение и помещаю его на сервер (тот же сервер, что и файлы php), то sessionID остается тем же, поэтому у меня эта проблема возникает только локально. Я добавил правильный CORS в мой файл php (чуть выше session_start()) и отправляю запрос withCredentials: true, но сессия всегда отличается.

Есть ли что-то, на что мне нужно обратить внимание? Я немного новичок PHP и более опытен в Angular, поэтому любая помощь приветствуется.

Angular почтовый запрос:

loginSession(form: string) {
const options = {
  headers: new HttpHeaders().set('Content-Type', 'application/json; charset=utf-8'),
  withCredentials: true
}
return this.httpClient.post<any>(`${this.SERVER}/function.php`, form, options);

}

Response Headers:

access-control-allow-credentials: true
access-control-allow-headers: Content-Type
access-control-allow-methods: POST, GET, OPTIONS, DELETE, PUT
access-control-allow-origin: http://localhost:4200
cache-control: no-store, no-cache, must-revalidate
content-type: text/html; charset=UTF-8
date: Wed, 15 Jan 2020 08:44:27 GMT
expires: Thu, 19 Nov 1981 08:52:00 GMT
pragma: no-cache
server: Apache
status: 200
vary: Accept-Encoding,User-Agent
x-content-encoding-over-network: gzip

Request Headers:

:authority: mysite.com
:method: POST
:path: /function.php
:scheme: https
accept: application/json, text/plain, */*
accept-encoding: gzip, deflate, br
accept-language: en-US,en;q=0.9
cache-control: no-cache
content-length: 68
content-type: application/json; charset=UTF-8
cookie: PHPSESSID=93cfc63e3b04eb7bf6f633ae1b11fba7
origin: http://localhost:4200
pragma: no-cache
referer: http://localhost:4200/
sec-fetch-mode: cors
sec-fetch-site: cross-site
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36

Спасибо

1 Ответ

0 голосов
/ 14 января 2020

Возможно, ваш запрос не отправляет куки с запросом. Php требует, чтобы клиентские куки поддерживали сеанс.

Поделитесь своим кодом, чтобы дать лучший ответ. Но на данный момент вы должны сделать запрос с параметром withCredentials, установленным в true.

let options = new RequestOptions({ headers: headers, withCredentials: true });

this.http.post(url, data, options)
...