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? Не очень хорошо :-/.