Home > Net >  Javascript fetch requests are empty when starting a session
Javascript fetch requests are empty when starting a session

Time:11-04

I have the following simple PHP page:

<?php
echo 'done';

When I send a Javascript fetch request to that URL, I can inspect the response in the browser's dev tools and see that it returns the string 'done'.

Here is the request:

const response = await fetch(url, {
  credentials: 'include'
});

On the other hand, if I start a session, the response is blank:

<?php
session_start();
echo 'done';

In both cases, the request headers are exactly the same, the response headers are exactly the same and the HTTP code is 200. It also works correctly if I manually go to that URL in the browser. It only fails specifically with fetch requests.

Note, I have display_errors and display_startup_errors set to On and nothing is outputted to the browser and nothing is logged in the log file either.

CodePudding user response:

This behavior is because of a bug with Chromium that the devs have decided they "WontFix" and have stopped answering comments.

In order to get it to work, you need to manually read response.text():

const response = await fetch(url);
const text = await response.text();

Once you do that, the response body will show up in your dev tools. If not, it will appear as if the response was empty, even if it wasn't.

CodePudding user response:

You can use async with Await

Asyn function getData(url){

const response = await fetch(url);
const data = await response.json();
Console.log(data).
}

You can change the .json() to text()

  • Related