Это из дублированного вопроса
$json = '[
{"product_id":"63","product_batch":"BAtch1","product_quantity":"50","product_price":"200","discount":"0","net_price":"20000"},
{"product_id":"67","product_batch":"Batch2","product_quantity":"50","product_price":"200","discount":"0","net_price":"20000"}
]';
$array = json_decode($json, true);
$out = array_map(function ($product) {
return array_merge([
'price' => $product['product_price'],
'quantity' => $product['product_quantity'],
], array_flip(array_filter(array_flip($product), function ($value) {
return $value != 'product_price' && $value != 'product_quantity';
})));
}, $array);
var_dump($out);
Один из возможных причин для этого имеет «голый» имя хоста (то есть один без доской части). Это довольно распространено, если вы работаете в интрасети.
Проблема в том, что почти все браузеры не будут принимать файлы cookie для хостов без доменного имени. Это сделано для того, чтобы предотвратить evilsite.com
от установки cookie для COM
(что было бы плохо, поскольку это будет конечное отслеживание cookie).
Итак, если вы получите доступ к вашему заявлению через http: // examplehost /
Это не примет не примет файл cookie, а для http: //examplehost.localdomain/
. и вернуть) печенье просто хорошо.
Немательная вещь в том, что сервер не может различать «браузер, получил файл cookie и проигнорировал его», а «браузер никогда не получил файл cookie». Таким образом, каждый один доступ будет выглядеть как совершенно новый сессон на сервер.
Попробуйте добавить плагин Live Http Headers в Firefox, и убедитесь, что сессионный cookie действительно передается браузеру с сервера, и убедитесь, что браузер отправляет его обратно при следующем запросе.
Пожалуйста, проверьте, если сеанс не является недействительным в вашем коде. Ищите код, похожий на request.getsession (). Invalidate ();
Сначала проверьте, не настроен ли в webapp'е context.xml
не cookies="false"
.
Далее полезно знать, что cookie-файлы зависят от домена, порта и контекстного пути. Если ссылки на странице указывают на другой домен, порт и/или контекстный путь в отличие от текущего URL запроса (тот, который вы видите в адресной строке браузера), то куки не будут передаваться, что приведет к тому, что сессия больше не сможет быть идентифицирована, и, таким образом, вы получите новую сессию из сервлетконтейнера.
Если причина не в этом, то проверьте, не делаете ли вы по каким-то причинам перенаправление на каждый запрос, используя HttpServletResponse.sendRedirect()
. Если вы сделаете это уже на самом первом запросе, то куки-файл будет потерян. Вам необходимо заменить
response.sendRedirect(url);
на
response.sendRedirect(response.encodeRedirectURL(url));