Как правильно отправить POST запрос с CSRF токеном в Laravel?

Как отправить POST запрос на адрес https://promokod.pikabu.ru/coupon/5ka/Lty7boqhMLLy с использованием cURL и извлечь ключ promocode из полученного JSON ответа?
Изображение к вопросу
  • 6 октября 2023 г. 5:17
Ответы на вопрос 2
1. Чтобы правильно отправить POST запрос с CSRF токеном в Laravel, вам нужно сначала получить CSRF токен из мета-тега веб-страницы и включить его в тело вашего POST запроса. Вы можете получить CSRF токен с помощью JavaScript-кода или вручную из мета-тега.

Вот пример JavaScript-кода, который с помощью jQuery получает CSRF токен:

```javascript
var csrfToken = $('meta[name="csrf-token"]').attr('content');
```

2. Затем, чтобы отправить POST запрос с использованием cURL, вы можете использовать следующий код:

```php
$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://promokod.pikabu.ru/coupon/5ka/Lty7boqhMLLy',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS => array(
        'promocode' => 'your_promocode',
        '_token' => $csrfToken,
    ),
));

$response = curl_exec($curl);

curl_close($curl);

$decodedResponse = json_decode($response, true);
$promocode = $decodedResponse['promocode'];
```

В этом примере мы отправляем POST запрос на указанный адрес с использованием cURL. В поле 'promocode' мы указываем значение промокода, которое должно быть передано, и в поле '_token' мы указываем CSRF токен, который мы получили ранее.

3. В полученном JSON ответе мы можем извлечь значение ключа 'promocode' с помощью декодирования JSON и обращения к соответствующему ключу.

Убедитесь, что у вас установлено и настроено расширение cURL в вашей среде разработки PHP для выполнения данного кода.
csrf-token можно получить из cookies, которые браузер отправляет при GET-запросе по адресу https://promokod.pikabu.ru/shops/5ka. В заголовках ответа будет присутствовать cookie с именем XSRF-TOKEN и его значением, например: XSRF-TOKEN=eyJpdiI6ImZuTllpTWRIb2ZDalF5.......TkyOWY3In0%3D; expires=Fri, 13-Oct-2023 12:56:29 GMT; Max-Age=604800; path=/. Именно это значение (csrf-token) нужно использовать при отправке POST-запроса.
Похожие вопросы