Поэтому я использую интерфейс GraphiQL для отправки графа запросы к моему бэкэнд.
Результат, который я получаю по моему запросу, включает не только действительный ответ, но и параметры, которые я отправляю вместе с запросом на публикацию;
Код: Выделить всё
"{\"query\":\"query Users {\\n users(pagination: {offset: 0, limit: 1}) {\\n items {\\n id\\n }\\n }\\n}\",\"variables\":null,\"operationName\":\"Users\"}{\"data\":{\"users\":{\"items\":[{\"id\":53}]}}}"
Похоже на тело запроса на публикацию добавляется к данным ответа моего API. Это приводит к ошибке анализа JSON на моем клиенте. Часть данных API здесь сама по себе кажется допустимой.
Самое странное в этой проблеме то, что она возникает при каждом секундном(!) запросе.
Итак, около 50% моих запросов получают действительный ответ в формате JSON и без какого-либо предваряющего тела запроса на публикацию.
Я пытался проанализировать основную причину этой проблемы и был не удалось найти место в коде, где находятся параметры. отображается как дополнительный вывод.
Вызывает ли конфигурация nginx добавление содержимого тела почтового запроса в начало?
Во время моего дальнейшее расследование, я начал заменять файл index.php внутри общедоступного каталога laravels и создал собственный index.php, который не содержит ничего, кроме выхода("test") ; казнь.
Результат оказался неожиданным. Я по-прежнему добавляю параметры сообщения к выводу при каждом втором запросе:
Код: Выделить всё
"{\"query\":\"query Users {\\n users(pagination: {offset: 0, limit: 1}) {\\n items {\\n id\\n }\\n }\\n}\",\"variables\":null,\"operationName\":\"Users\"}test"
Контейнер докера открывает порт, который получает прокси от сервера apache2, который работает в моей корневой системе.
Это моя конфигурация nginx по умолчанию:
Код: Выделить всё
server {
listen 80;
server_name my-domain.com;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/html/public;
index index.php index.html;
location / {
client_max_body_size 100M;
if ($request_method = 'OPTIONS') {
add_header Access-Control-Max-Age 1728000;
add_header Access-Control-Allow-Credentials true;
add_header Access-Control-Allow-Origin $http_origin;
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS, PUT, DELETE, HEAD";
add_header Content-Length 0;
add_header Content-Type "text/plain; charset=UTF-8";
add_header Access-Control-Allow-Headers "Origin,X-Requested-With,Content-Type,Accept,X-CSRF-Token,X-XSRF-TOKEN,Authorization";
return 204;
}
try_files $uri $uri/ /index.php?$query_string;
gzip_static on;
}
location ~ \.php$ {
client_max_body_size 100M;
if ($http_origin ~* "^(blob:)?http(s)?://www.my-domain.com(:[0-9]{2,4})?$") {
add_header Access-Control-Allow-Credentials true;
add_header Access-Control-Allow-Origin $http_origin;
add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS";
add_header Access-Control-Allow-Headers "Origin,X-Requested-With,Content-Type,Accept,X-CSRF-Token,X-XSRF-TOKEN,Authorization";
}
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass epapistagephp:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
Спасибо! заранее!!
Привет, Жюль
Подробнее здесь: https://stackoverflow.com/questions/649 ... its-buffer