Json content type php: Returning JSON from a PHP Script

Общие типы MIME — HTTP

В этом разделе перечислены наиболее распространенные типы MIME с соответствующими типами документов, упорядоченные по их общим расширениям.

Следующие два важных типа MIME являются типами по умолчанию:

  • text/plain — значение по умолчанию для текстовых файлов. Текстовый файл должен быть удобочитаемым и не должен содержать двоичных данных.
  • application/octet-stream — значение по умолчанию для всех остальных случаев. Неизвестный тип файла должен использовать этот тип. Браузеры проявляют особую осторожность при манипулировании этими файлами, чтобы защитить пользователей от уязвимостей программного обеспечения и возможного опасного поведения.

IANA является официальным реестром типов носителей MIME и ведет список всех официальных типов MIME. В этой таблице перечислены важные типы MIME для Интернета:

Extension Вид документа Тип MIME
. aac Аудио AAC аудио/акустика
.abw Документ AbiWord приложение/x-abiword
.arc Архивный документ (несколько встроенных файлов) приложение/x-freearc
.avif Изображение AVIF изображение/авиафайл
.avi AVI: Чередование аудио-видео видео/x-msvideo
.azw Формат электронной книги Amazon Kindle приложение/vnd.amazon.ebook
.bin Любые двоичные данные приложение/октетный поток
. bmp Растровая графика Windows OS/2 изображение/bmp
.bz BZip-архив приложение/x-bzip
.bz2 Архив BZip2 приложение/x-bzip2
.cda Аудио компакт-диск приложение/x-cdf
.csh Сценарий C-Shell приложение/x-csh
.css Каскадные таблицы стилей (CSS) текст/CSS
.csv Значения, разделенные запятыми (CSV) текст/csv
.doc Microsoft Word приложение/msword
. docx Microsoft Word (OpenXML) приложение/vnd.openxmlformats-officedocument.wordprocessingml.document
.eot Встроенные шрифты MS OpenType приложение/vnd.ms-fontobject
.epub Электронная публикация (EPUB) приложение/epub+zip
.gz Сжатый архив GZip приложение/gzip
.gif Формат обмена графикой (GIF) изображение/gif
.htm , .html Язык гипертекстовой разметки (HTML) текст/html
.ico Формат значка изображение/vnd. microsoft.icon
.ics Формат iCalendar текст/календарь
.банка Архив Java (JAR) приложение/java-архив
.jpeg , .jpg изображений JPEG изображение/jpeg
.js JavaScript текст/javascript (спецификации: HTML и RFC 9239)
.json Формат JSON приложение/json
.jsonld Формат JSON-LD приложение/ld+json
.мид , .миди Цифровой интерфейс музыкальных инструментов (MIDI) аудио/миди , аудио/x-миди
. mjs Модуль JavaScript текст/javascript
.mp3 MP3-аудио аудио/mpeg
.mp4 Видео MP4 видео/mp4
.mpeg Видео MPEG видео/mpeg
.mpkg Пакет установщика Apple приложение/vnd.apple.installer+xml
.odp Документ презентации OpenDocument приложение/vnd.oasis.opendocument.presentation
.ods Табличный документ OpenDocument приложение/vnd.oasis.opendocument.spreadsheet
. odt Текстовый документ OpenDocument приложение/vnd.oasis.opendocument.text
.ога Аудио OGG аудио/огг
.ogv Видео ОГГ видео/огг
.ogx ОГГ приложение/огг
.опус Опус аудио аудио/опус
.otf Шрифт OpenType шрифт/otf
.png Портативная сетевая графика изображение/png
.pdf Adobe Portable Document Format (PDF) приложение/pdf
. php Препроцессор гипертекста ( Персональная домашняя страница ) приложение/x-httpd-php
.ppt Microsoft PowerPoint приложение/vnd.ms-powerpoint
.pptx Microsoft PowerPoint (OpenXML) приложение/vnd.openxmlformats-officedocument.presentationml.presentation
.rar Архив RAR приложение/vnd.rar
.rtf Расширенный текстовый формат (RTF) приложение/rtf
Сценарий оболочки Борна приложение/х-ш
.svg Масштабируемая векторная графика (SVG) изображение/svg+xml
. tar Ленточный архив (TAR) приложение/x-tar
.tif , .tiff Формат файла изображения с тегами (TIFF) изображение/TIFF
.тс Транспортный поток MPEG видео/mp2t
.ttf Шрифт TrueType шрифт/ttf
.txt Текст (обычно ASCII или ISO 8859- n ) текстовый/обычный
.vsd Microsoft Visio приложение/vnd.visio
.wav Аудиоформат сигнала аудио/wav
.веба аудио WEBM аудио/вебм
. вебм Видео WEBM видео/веб-сайт
.webp Изображение WEBP изображение/веб-страница
.woff Формат открытого веб-шрифта (WOFF) шрифт/woff
.woff2 Формат открытого веб-шрифта (WOFF) шрифт/woff2
.xhtml XHTML приложение/xhtml+xml
.xls Microsoft Excel приложение/vnd.ms-excel
.xlsx Microsoft Excel (OpenXML) приложение/vnd.openxmlformats-officedocument.spreadsheetml.sheet
. xml XML application/xml рекомендуется согласно RFC 7303 (раздел 4.1), но text/xml все еще иногда используется. Вы можете назначить определенный тип MIME файлу с расширением .xml в зависимости от того, как его содержимое должно интерпретироваться. Например, фид Atom — это application/atom+xml , но application/xml служит допустимым значением по умолчанию.
.xul СУЛ приложение/vnd.mozilla.xul+xml
.zip ZIP-архив приложение/zip
.3gp Контейнер аудио/видео 3GPP видео/3gpp ; аудио/3gpp если не содержит видео
.3g2 Контейнер аудио/видео 3GPP2 видео/3gpp2 ; аудио/3gpp2 если не содержит видео
. 7z 7-zip архив приложение/x-7z-сжатый

Обнаружили проблему с содержанием этой страницы?

  • Отредактируйте страницу на GitHub.
  • Сообщить о проблеме с содержимым.
  • Посмотреть исходный код на GitHub.

Хотите принять более активное участие?

Узнайте, как внести свой вклад.

Последний раз эта страница была изменена участниками MDN.

POST, тип содержимого: application/json и json_decode

10 лет назад
by Иван Эндерлин @ Хоа

— посмотреть источник

непрочитано

В пятницу, 21 сентября 2012 г., в 13:05, Иван Эндерлин @ Hoa
[email protected] написал:

Здравствуйте,

Если PHP получает HTTP-запрос с методом POST и заголовком
Content-Type: application/x-www-form-encoded, он автоматически анализирует
тело запроса для заполнения массива в $_POST. Если Content-Type отличается на
(например, text/plain или application/json), тело запроса
доступно при чтении php://input. Ну, это нормально.

Но есть ли планы рассмотреть application/json при разборе запроса
и занести результат в $_POST (возможно, с помощью json_decode()
)?

Если да, то я хотел бы предложить патч, но я не нахожу в исходном коде
, где тело запроса перехватывается и анализируется (для POST). Есть идеи?
Может быть, RFC также будет полезен для завершения моего предложения?

Спасибо.
Привет!

Функция чтения и анализа почтовых данных определяется как указатель функции SAPI struct
.
Вам следует посмотреть определение 9 sapi_module_struct0948 (http://lxr.php.net/xref/PHP_5_4/main/SAPI.h#251).

Когда приходит запрос, вызывается sapi_activate(). Затем он вызывает
sapi_read_post_data() http://lxr.php.net/xref/PHP_5_4/main/SAPI.c#459
, который сам вызывает обработчики.
Обработчики по умолчанию определены здесь:
http://lxr.php.net/xref/PHP_5_4/main/php_content_types.c#29 и для
POST по умолчанию вызывается sapi_read_standard_form_data() (определено
здесь http:// lxr.php.net/xref/PHP_5_4/main/SAPI.c#253)
Эта функция на самом деле просто мост, она говорит PHP вызвать
sapi.read_post(), который является указателем функции, определенным каждым SAPI.
Наконец, позже вызывается sapi.default_post_reader() (опять же, указатель функции
, определенный каждым SAPI)

Я согласен, что это не очень тривиальная часть :p
Нет, это ясно.
Спасибо за пояснение!


Иван Эндерлин
Разработчик ТСЖ
http://hoa.42/ или http://hoa-project.net/

кандидат наук. студент DISC/Femto-ST (Весонтио) и INRIA (Кассис)
http://disc.univ-fcomte.fr/ и http://www.inria.fr/

Член рабочей группы HTML и WebApps W3C
http://w3.org/

10 лет назад
by Иван Эндерлин @ Хоа

— посмотреть источник

непрочитано

Пт, 21 сентября 2012 г. , 13:05, Иван Эндерлин @ Hoa
[email protected] написал:

Здравствуйте,

Если PHP получает HTTP-запрос с методом POST и заголовком
Content-Type: application/x-www-form-encoded, он автоматически анализирует
тело запроса для заполнения массива в $_POST. Если Content-Type отличается на
(например, text/plain или application/json), тело запроса
доступно при чтении php://input. Ну, это нормально.

Но есть ли планы рассмотреть application/json при разборе запроса
и занести результат в $_POST (возможно, с помощью json_decode()
)?

Если да, то я хотел бы предложить патч, но я не нахожу в исходном коде
, где тело запроса перехватывается и анализируется (для POST). Есть идеи?
Может быть, RFC также будет полезен для завершения моего предложения?

Спасибо.
Привет!

Функция чтения и анализа почтовых данных определяется как указатель функции SAPI struct
.
Вам следует посмотреть определение 9 sapi_module_struct0948 (http://lxr.php.net/xref/PHP_5_4/main/SAPI.h#251).

Когда приходит запрос, вызывается sapi_activate(). Затем он вызывает
sapi_read_post_data() http://lxr.php.net/xref/PHP_5_4/main/SAPI.c#459
, который сам вызывает обработчики.
Обработчики по умолчанию определены здесь:
http://lxr.php.net/xref/PHP_5_4/main/php_content_types.c#29 и для
POST по умолчанию вызывается sapi_read_standard_form_data() (определено
здесь http:// lxr.php.net/xref/PHP_5_4/main/SAPI.c#253)
Эта функция на самом деле просто мост, она говорит PHP вызвать
sapi.read_post(), который является указателем функции, определенным каждым SAPI.
Наконец, позже вызывается sapi.default_post_reader() (опять же, указатель функции
, определяемый каждым SAPI)
У меня есть несколько вопросов. Жюльен сказал мне наедине, что не знает,
надеется, что кто-нибудь ответит.

Читая код, я понимаю, что каждый SAPI отвечает за
анализ тела запроса POST, если он равен
application/x-www-form-urlencoded. Я прав? В SAPI.c я прочитал, что он
делегирует эту задачу sapi_module.read_post, передавая
SG(request_info).post_data (см. main/SAPI.c#266).

Значит ли это, что если мы хотим добавить поддержку application/json,
, то мы должны сделать это для каждого SAPI? Не очень хорошо :-/.

Когда я найду код для редактирования, я планирую использовать
php_json_decode_ex & co. (см. ext/json/json.c#633), но 9Всегда присутствует риск коллизии хэшей 0948. В любом случае json_decode() должен быть
снова защищен от коллизии хэшей (см. https://bugs.php.net/60655).

Спасибо за помощь,
С уважением.


Иван Эндерлин
Разработчик ТСЖ
http://hoa.42/ или http://hoa-project.net/

Кандидат технических наук. студент DISC/Femto-ST (Весонтио) и INRIA (Кассис)
http://disc.univ-fcomte.fr/ и http://www.inria.fr/

Член рабочей группы HTML и WebApps W3C
http://w3.org/

10 лет назад
от джпаули

— посмотреть источник

непрочитано

В понедельник, 24 сентября 2012 г. , в 16:21, Иван Эндерлин @ Hoa
[email protected] написал:

В пятницу, 21 сентября 2012 г., в 13:05, Иван Эндерлин @ Hoa
[email protected] написал:

Здравствуйте,

Если PHP получает HTTP-запрос с методом POST и с заголовком
Content-Type: application/x-www-form-encoded, затем он автоматически
анализирует
тело запроса для заполнения массива в $_POST. Если Content-Type отличается на
(например, text/plain или application/json), тело запроса
доступно при чтении php://input. Ну, это нормально.

Но есть ли планы рассмотреть application/json путем разбора тела запроса

и заполнения результата в $_POST (возможно, с помощью json_decode()
)?

Если да, то я хотел бы предложить патч, но я не нахожу в исходниках
код
, где тело запроса перехватывается и анализируется (для POST). Есть идеи?
Может быть, RFC также будет полезен для завершения моего предложения?

Спасибо.

Привет!

Функция чтения и анализа почтовых данных определяется как указатель функции SAPI struct
.
Вам следует посмотреть определение sapi_module_struct
(http://lxr.php.net/xref/PHP_5_4/main/SAPI.h#251).

Когда приходит запрос, вызывается sapi_activate(). Затем он вызывает
sapi_read_post_data() http://lxr.php.net/xref/PHP_5_4/main/SAPI.c#459
, который сам вызывает обработчики.
Обработчики по умолчанию определены здесь:
http://lxr.php.net/xref/PHP_5_4/main/php_content_types.c#29 и для
POST по умолчанию вызывается sapi_read_standard_form_data() (определено
здесь http:// lxr.php.net/xref/PHP_5_4/main/SAPI.c#253)
Эта функция на самом деле просто мост, она говорит PHP вызывать
sapi.read_post(), который является указателем на функцию, определяемым каждым SAPI.
Наконец, позже вызывается sapi.default_post_reader() (опять же, указатель функции
, определенный каждым SAPI)

У меня есть несколько вопросов. Жюльен сказал мне наедине, что не знает, надеюсь,
кто-нибудь ответит.

Читая код, я понимаю, что каждый SAPI отвечает за анализ
тела POST-запроса, если он имеет кодировку application/x-www-form-urlencoded. Я прав
? В SAPI.c я читал, что он делегирует эту задачу
sapi_module.read_post, указав SG(request_info).post_data (см.
main/SAPI.c#266).

Это означает, что если мы хотим добавить поддержку application/json,
то мы должны сделать это для каждого SAPI? Не очень хорошо :-/.

Когда я найду код для редактирования, я планирую использовать php_json_decode_ex
и другие. (пожалуйста, см. ext/json/json.c#633), но всегда присутствует риск коллизии хэшей
. В любом случае json_decode() должен быть снова защищен хэшем 9Коллизия 0948 (см. https://bugs.php.net/60655).

Конфликт хэшей — это поведение, которое в любом случае сохраняется в нашей реализации HashTable.
Удалить его можно безопасно, только изменив алгоритм хеширования,
что не такая уж простая задача в случае PHP.

Я предлагаю вам начать свой POC с написания обработчика json,
не беспокоясь о коллизиях хэшей 🙂

Julien.P

10 лет назад
by Иван Эндерлин @ Хоа

— посмотреть источник

непрочитано

В понедельник, 24 сентября 2012 г., в 16:21, Иван Эндерлин @ Hoa
[email protected] написал:

В пятницу, 21 сентября 2012 г., в 13:05, Иван Эндерлин @ Hoa
[email protected] написал:

Здравствуйте,

Если PHP получает HTTP-запрос с методом POST и с заголовком
Content-Type: application/x-www-form-encoded, то он автоматически
анализирует
тело запроса для заполнения массива в $_POST. Если Content-Type отличается на
(например, text/plain или application/json), тело запроса
доступно при чтении php://input. Ну, это нормально.

Но есть ли планы рассмотреть application/json путем разбора тела запроса

и заполнения результата в $_POST (возможно, с помощью json_decode()
)?

Если да, то хотел бы предложить патч, но не нахожу в исходниках
код
, где тело запроса перехватывается и анализируется (для POST). Есть идеи?
Может быть, RFC также будет полезен для завершения моего предложения?

Спасибо.
Привет!

Функция чтения и анализа почтовых данных определяется как указатель функции SAPI struct
.
Вам следует посмотреть определение sapi_module_struct
(http://lxr.php.net/xref/PHP_5_4/main/SAPI.h#251).

Когда приходит запрос, вызывается sapi_activate(). Затем он вызывает
sapi_read_post_data() http://lxr.php.net/xref/PHP_5_4/main/SAPI.c#459.
, который сам вызывает обработчики.
Обработчики по умолчанию определены здесь:
http://lxr.php.net/xref/PHP_5_4/main/php_content_types. c#29 и для
POST по умолчанию вызывается sapi_read_standard_form_data() (определено
здесь http:// lxr.php.net/xref/PHP_5_4/main/SAPI.c#253)
Эта функция на самом деле является просто мостом, она сообщает PHP о вызове
sapi.read_post(), который является указателем на функцию, определяемым каждым SAPI.
Наконец, позже вызывается sapi.default_post_reader() (опять же,
указатель функции, определяемый каждым SAPI)
У меня есть несколько вопросов. Жюльен сказал мне наедине, что не знает, надеюсь,
кто-нибудь ответит.

Читая код, я понимаю, что каждый SAPI отвечает за анализ
тела POST-запроса, если он имеет кодировку application/x-www-form-urlencoded. Я прав
? В SAPI.c я прочитал, что он делегирует эту задачу
sapi_module.read_post, передавая SG(request_info).post_data (см.
main/SAPI.c#266).

Это означает, что если мы хотим добавить поддержку application/json,
, то мы должны сделать это для каждого SAPI? Не очень хорошо :-/.