recursal/MDN huggingface dataset:
r
=

Атрибут r устанавливает значение радиуса круга.
Этот атрибут используют два элемента: `<circle>`, и `<radialGradient>`

Пример
------
```

html,
body,
svg {
  height: 100%;
}
```



```html
<svg viewBox="0 0 300 200" xmlns="http://www.w3.org/2000/svg">
  <radialGradient r="0" id="myGradient000">
    <stop offset="0" stop-color="white" />
    <stop offset="100%" stop-color="black" />
  </radialGradient>
  <radialGradient r="50%" id="myGradient050">
    <stop offset="0" stop-color="white" />
    <stop offset="100%" stop-color="black" />
  </radialGradient>
  <radialGradient r="100%" id="myGradient100">
    <stop offset="0" stop-color="white" />
    <stop offset="100%" stop-color="black" />
  </radialGradient>

  <circle cx="50" cy="50" r="0" />
  <circle cx="150" cy="50" r="25" />
  <circle cx="250" cy="50" r="50" />

  <rect x="20" y="120" width="60" height="60" fill="url(#myGradient000)" />
  <rect x="120" y="120" width="60" height="60" fill="url(#myGradient050)" />
  <rect x="220" y="120" width="60" height="60" fill="url(#myGradient100)" />
</svg>
```

circle
------

Для `<circle>`, `r` устанавливает радиус окружности и, следовательно, её размер. При значении, меньшем или равном нулю, круг не будет нарисован.

| Значение | **<length>**| **<percentage>** |
| --- | --- |
| Значение по умолчанию | `0` |
| Анимируемость | Да |

**Примечание:** Начиная с SVG2, **r** является свойством геометрии, означающим, что этот атрибут также может использоваться как CSS-свойство для кругов.

radialGradient
--------------

Для `<radialGradient>`, `r` устанавливает радиус конечной окружности радиального градиента.

Градиент будет нарисован таким образом, чтобы **100%** конца градиента отображались по периметру этого конечного круга. Значение, меньшее или равное нулю, приведёт к тому, что область будет окрашена как один цвет, используя цвет и непрозрачность последнего градиента `<stop>` (en-US).

| Значение | **<length>** | **<percentage>** |
| --- | --- |
| Значение по умолчанию | `50%` |
| Анимируемость | Да |

Спецификации
------------

| Specification |
| --- |
| Scalable Vector Graphics (SVG) 2 # R |
| Scalable Vector Graphics (SVG) 2 # RadialGradientElementRAttribute |
SVG image element
=================

* « Предыдущая статья
* Следующая статья »

SVG тег `<image>` позволяет выводить растровые изображения внутри SVG-объектов.

В примере ниже растровое изображение **a.jpg**, заданное при помощи атрибута `href (en-US)`, отображено внутри SVG-объекта:


```xml
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="5cm" height="4cm" version="1.1"
 xmlns="http://www.w3.org/2000/svg" xmlns:xlink= "http://www.w3.org/1999/xlink">
  <image xlink:href="firefox.jpg" x="0" y="0" height="50px" width="50px"/>
</svg>
```


**Предупреждение:** Важные замечания (подробнее W3 specs):

* Если параметры **x** или **y** не заданы, то им будут присвоены значения равные **0**.
* Если параметры **height** или **width** не заданы, то им будут присвоены значения равные **0**.
* Если значение любого из параметров изображения **height** или **width** равны **0**, то отображение отключено.
* « Предыдущая статья
* Следующая статья »
Работа с SVG
============

* « Предыдущая статья

Теперь, когда мы рассмотрели основы SVG, мы рассмотрим некоторые инструменты для работы с SVG файлами.

Inkscape
--------

URL: www.inkscape.org

Очень важно иметь в инструментарии приличную графическую программу. Inkscape предлагает современную векторную графику с открытым исходным кодом.

Кроме того, SVG является её родным форматом. Для хранения специфичных для Inkscape данных, файл SVG расширяется элементами и атрибутами в пользовательском пространстве имён, что не мешает выбрать экспорт и в виде простого SVG.

Adobe Illustrator
-----------------

URL: www.adobe.com/products/illustrator/

Before Adobe acquired Macromedia, it was the most prominent promoter of SVG. From this time stems the good support of SVG in Illustrator. However, the resulting SVG often shows some quirks, that make it necessary to post-process it for general applicability.

Apache Batik
------------

URL: xmlgraphics.apache.org/batik/

Batik is a set of open source tools under the roof of the Apache Software Foundation. The toolkit is written in Java and offers almost complete SVG 1.1 support, as well as some features that were originally planned for SVG 1.2.

Batik offers a viewer (Squiggle), a rasterizer for PNG output, an SVG pretty printer to format SVG files, and a TrueType-to-SVG-Font converter.

Together with Apache FOP Batik can transform SVG to PDF.

### Other renderers

Several projects exist that can create a raster image from an SVG source. ImageMagick is one of the most famous command-line image processing tools. The Gnome library rsvg is used by the Wikipedia to raster their SVG graphics. Usage of headless browsers such as SlimerJS and PhantomJS are also popular for this purpose, as the image produced is closer to what the SVG will look like in the browser.

Raphael JS
----------

URL: raphaeljs.com

This is a JavaScript library, that acts as an abstraction layer between browser implementations. Notably older versions of Internet Explorer are supported by generating VML, a vector markup language, that is one of two ancestors of SVG and exists since IE 5.5.

Snap.svg
--------

URL: snapsvg.io

A newer JavaScript abstraction layer from the same author of Raphael JS. Snap.svg is designed for modern browsers and therefore supports the newest SVG features like masking, clipping, patterns, full gradients, groups. It does not support the older browsers that Raphael does.

Google Docs
-----------

URL: www.google.com/google-d-s/drawings/

Drawings from Google Docs can be exported as SVG.

Science
-------

The well-known plotting tools xfig and gnuplot both support exporting as SVG. To render graphs on the web JSXGraph supports VML, SVG and canvas, automatically deciding which technology to use based on browser capabilities.

In GIS (Geographic Information System) applications SVG is often used as both storage and rendering format. See carto.net for details.

Больше программ!
----------------

W3C предлагает список программ, которые поддерживают SVG.

* « Предыдущая статья
Фильтры
=======

* « Предыдущая статья
* Следующая статья »

Бывают ситуации, при которых базовые фигуры не обеспечивают гибкость, необходимую для достижения определённого эффекта. Тени, например, не могут быть созданы с помощью комбинации градиентов. Фильтры - это механизм SVG для создания сложных эффектов.

Основным примером может послужить эффект размытия в SVG. Базовый эффект размытия может быть достигнут с помощью градиентов, фильтр размытия необходим, чтобы сделать что-либо большее.

Вы можете получить полную информацию об SVG фильтрах на W3C Recommendation.

* « Предыдущая статья
* Следующая статья »
Другое содержание в SVG
=======================

* « Предыдущая статья
* Следующая статья »

Помимо графических примитивов, таких как прямоугольники и круги, SVG предлагает набор элементов для встраивания других типов контента в изображения.

### Встраивание растровых изображений

Так же, как элемент img в HTML SVG имеет элемент изображения, служащий той же цели. Вы можете использовать его для встраивания произвольных растровых (и векторных) изображений. Спецификация запрашивает приложения для поддержки файлов формата PNG, JPEG и SVG.

Встроенное изображение становится обычным элементом SVG. Это означает, что вы можете использовать клипы, маски, фильтры, вращения и все другие инструменты SVG для контента:


```html
<svg
 version="1.1"
 xmlns="http://www.w3.org/2000/svg"
 xmlns:xlink="http://www.w3.org/1999/xlink"
 width="200"
 height="200">
  <image
 x="90"
 y="-65"
 width="128"
 height="146"
 transform="rotate(45)"
 xlink:href="https://developer.mozilla.org/static/img/favicon144.png" />
</svg>
```


| Screenshot | Live sample |
| --- | --- |
|  |  |

### Внедрение произвольного XML

 Поскольку SVG является XML-приложением, вы можете, конечно, всегда вставлять произвольный XML в любом месте документа SVG. Но тогда у вас нет средств для определения того, как окружающий SVG должен реагировать на содержимое. Собственно, в соответствующем обозревателе он совсем не реагирует, данные просто будут опущены.
 Поэтому спецификация добавляет элемент ``<foreignObject>`` в SVG. Его единственная цель - быть контейнером для другой разметки и носителем для атрибутов стиля SVG (наиболее заметны ширина и высота для определения пространства, которое будет занимать объект).

Элемент `foreignObject` - хороший способ вставки XHTML в SVG. Если у вас есть более длинные тексты, макет HTML более подходит и удобен, чем текстовый элемент SVG. Другим часто упоминаемым примером использования является вложение формул с MathML. Для научных приложений SVG это очень хороший способ вступить в оба мира.

**Примечание:** Имейте в виду, что контент в `foreignObject` должен поддерживаться обозревателем. Обычная программа для просмотра SVG вряд ли сможет отобразить HTML или MathML.

Поскольку `foreignObject` является элементом SVG, вы можете, как и в случае с изображением, использовать с ним любую добросовестность SVG, которая затем будет применяться к его контенту.

* « Предыдущая статья
* Следующая статья »
Методы HTTP запроса
===================

HTTP определяет множество **методов запроса**, которые указывают, какое желаемое действие выполнится для данного ресурса. Несмотря на то, что их названия могут быть существительными, эти методы запроса иногда называются *HTTP глаголами*. Каждый реализует свою семантику, но каждая группа команд разделяет общие свойства: так, методы могут быть безопасными, идемпотентными или кешируемыми.

`GET`

Метод `GET` запрашивает представление ресурса. Запросы с использованием этого метода могут только извлекать данные.

`HEAD`

`HEAD` запрашивает ресурс так же, как и метод GET, но без тела ответа.

`POST`

`POST` используется для отправки сущностей к определённому ресурсу. Часто вызывает изменение состояния или какие-то побочные эффекты на сервере.

`PUT`

`PUT` заменяет все текущие представления ресурса данными запроса.

`DELETE`

`DELETE` удаляет указанный ресурс.

`CONNECT`

`CONNECT` устанавливает "туннель" к серверу, определённому по ресурсу.

`OPTIONS`

`OPTIONS` используется для описания параметров соединения с ресурсом.

`TRACE`

`TRACE` выполняет вызов возвращаемого тестового сообщения с ресурса.

`PATCH`

`PATCH` используется для частичного изменения ресурса.

Спецификации
------------

| Спецификация | Название | Комментарий |
| --- | --- | --- |
| RFC 7231, раздел 4: Request methods | Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content | Определение GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE. |
| RFC 5789, раздел 2: Patch method | PATCH метод для HTTP | Определение PATCH. |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* HTTP заголовки
Basics of HTTP
==============

HTTP удобный расширяемый протокол. Он опирается на несколько базовых понятий, таких как: ресурсы и URI (унифицированный идентификатор ресурса), простая структура сообщений и технология "клиент-сервер" для общения. Помимо этих базовых концепций, за последние годы появилось множество расширений, добавляющих новые функциональные возможности и новую семантику путём создания новых HTTP-методов или заголовков.

Статьи
------

Обзор HTTP

Описывает, что такое HTTP и какова его роль в архитектуре всемирной паутины, позицию в стеке протоколов.

Эволюция HTTP (en-US)

HTTP был создан в начале 1990-х годов и несколько раз был расширен. Эта статья даёт обзор его истории и описывает HTTP/0.9, HTTP/1.0, HTTP/1.1, и современный HTTP/2, а также незначительные нововведения представленные в последние несколько лет.

Обсуждение версии HTTP

Описывает, как клиент и сервер могут договориться о конкретной версии HTTP и в конечном счёте перейти на более новую версию протокола.

Resources and URIs (en-US)

A brief introduction of the notion of resources, identifiers, and locations on the Web.

Identifying resources on the Web

Describes how Web resources are referenced and how to locate them.

Data URIs

A specific kind of URIs that directly embeds the resource it represents. Data URIs are very convenient, but have some caveats.

Separating identity and location of a resource: the Alt-Svc HTTP header

Most of the time identity and location of a Web resource are shared, this can be changed with the `Alt-Svc` (en-US) header.

MIME types

Since HTTP/1.0, different types of content can be transmitted. This article explains how this is done using the `Content-Type` header and the MIME standard.

Choosing between www and non-www URLs (en-US)

Advice on using a www-prefixed domain or not, this article explains the consequences of the choice as well as how to make it.

Flow of an HTTP session

This fundamental article describes a typical HTTP session: what happens under the hood when you click on a link in your browser…

HTTP Messages

HTTP Messages transmitted during requests or responses have a very clear structure; this introductory article describes this structure, its purpose and its possibilities.

Frame and message structure in HTTP/2

HTTP/2 encapsulates and represents HTTP/1.x messages in a binary frame. This article explains the frame structure, its purpose and the way it is encoded.

Connection management in HTTP/1.x

HTTP/1.1 was the first version of HTTP to support persistent connection and pipelining. This article explains these two concepts.

Connection management in HTTP/2

HTTP/2 completely revisited how connections are created and maintained: this article explains how HTTP frames allow multiplexing and solve the 'head-of-line' blocking problem of former HTTP versions.

Content Negotiation

HTTP introduces a set of headers, starting with `Accept-` as a way for a browser to announce the format, language, or encoding it prefers. This article explains how this advertisement happens, how the server is expected to react and how it will choose the most adequate response.
Accept-Patch
============

HTTP-заголовок запроса **`Accept-Patch`** показывает, какой медиа-тип понимает сервер внутри запроса `PATCH`.

Наличие **`Accept-Patch`** в ответе к любому методу означает, что сервер принимает `PATCH`-запросы. Как правило, из этого вытекает следующее:

Сервер, принимающий `PATCH`-запрос с неподдерживаемым медиа-типом может ответить кодом ошибки `415` `Unsupported Media Type` и заголовком **`Accept-Patch`**, в котором перечислены поддерживаемые медиа-типы.

**Примечание:** Хранилище IANA поддерживает полный список официальных кодировок.

**Примечание:** Иногда также используются две другие кодировки, `bzip` и `bzip2`, но они не входят в стандарт. Они применяют алгоритм, который используются в этих двух UNIX-программах. Стоит учесть, что поддержка первой кодировки прекратилась из-за проблем с лицензированием.


|  |  |
| --- | --- |
| Тип заголовка | Заголовок ответа (en-US) |
| Запрещённое имя заголовка | да |

Синтаксис
---------
```

Accept-Patch: application/example, text/example
Accept-Patch: text/example;charset=utf-8
Accept-Patch: application/merge-patch+json
```

Директивы
---------

Нет

Примеры
-------
```

Accept-Patch: application/example, text/example

Accept-Patch: text/example;charset=utf-8

Accept-Patch: application/merge-patch+json
```

Спецификации
------------

| Спецификация | Название |
| --- | --- |
| RFC 5789, раздел 3.1: Accept-Patch | HTTP PATCH |

Совместимость с браузерами
--------------------------

Совместимость с браузерами не играет роли для данного заголовка, так как заголовок посылается сервером и спецификация не определяет поведение клиента.

Смотрите также
--------------

* HTTP-метод `PATCH`
* Семантика и контекст RFC 7231, раздел 4.3.4: PUT
Vary
====

Заголовок ответа **`Vary`** определяет, как сопоставить будущие заголовки запроса, чтобы решить, можно ли использовать кешированный ответ, а не запрашивать новый с исходного сервера. Он используется сервером для указания того, какие заголовки он использовал при выборе представления ресурса в алгоритме согласования контента.

Заголовок `Vary` должен быть установлен для ответа `304` `Not Modified` точно так же, как он был бы установлен для эквивалентного ответа `200` `OK`.

|  |  |
| --- | --- |
| Тип заголовка | Response header (en-US) |
| Forbidden header name | no |

Syntax
------
```

Vary: *
Vary: <header-name>, <header-name>, ...
```

Directives
----------

\*

Каждый запрос должен рассматриваться как уникальный и не кешируемый. Лучший способ указать это - использовать `Cache-Control`: `no-store`, который удобнее для чтения и также сигнализирует о том, что объект не должен храниться никогда.

<header-name>

Разделённый запятыми список имён заголовков, которые необходимо учитывать при принятии решения о том, можно ли использовать кешированный ответ.

Examples
--------

### Dynamic serving

When using the `Vary: User-Agent` header, caching servers should consider the user agent when deciding whether to serve the page from cache. For example, if you are serving different content to mobile users, it can help you to avoid that a cache may mistakenly serve a desktop version of your site to your mobile users. It can help Google and other search engines to discover the mobile version of a page, and might also tell them that no Cloaking is intended.
```

Vary: User-Agent
```

Specifications
--------------

| Specification | Title |
| --- | --- |
| RFC 7231, раздел 7.1.4: Vary | Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Compatibility notes
-------------------

* Vary with care – Vary header problems in IE6-9
See also
--------

* Understanding The Vary Header - Smashing Magazine
* Best Practices for Using the Vary Header – fastly.com
* Content negotiation
X-XSS-Protection
================

Заголовок ответа HTTP **`X-XSS-Protection`** это особенность Internet Explorer, Chrome и Safari, которая останавливает загрузку страниц при обнаружении (XSS (en-US)) атаки. Хотя эти меры защиты не требуются в большинстве случаев для современных браузеров, когда сайты внедряют сильную политику безопасности контента `Content-Security-Policy` (en-US), которая отключает использование встроенного JavaScript (`'unsafe-inline'`), они могут обеспечить защиту для пользователей, использующих устаревшие версии браузеров, не поддерживающих CSP.

|  |  |
| --- | --- |
| Тип заголовка | Response header (en-US) |
| Запрещённое имя заголовка
Forbidden header name | no |

Синтаксис
---------
```

X-XSS-Protection: 0
X-XSS-Protection: 1
X-XSS-Protection: 1; mode=block
X-XSS-Protection: 1; report=<reporting-uri>
```


0

Отключает фильтрацию XSS.

1

Включает фильтрацию XSS (по умолчанию в браузерах). Если будет замечена попытка межсайтового скриптинга(XSS), браузер удалит небезопасное содержимое.

1; mode=block

Включает фильтрацию XSS. Вместо того, чтобы очищать содержимое страницы, браузер предотвратит отображение страницы, если заметит атаку.

1; report=<reporting-URI> (Chromium only)

Включает фильтрацию XSS. При обнаружении атаки межсайтового скриптинга, браузер очистит страницу от небезопасного содержимого и сообщит о нарушении. Для отправки отчёта используется функциональные возможности директивы CSP `report-uri` (en-US).

Пример
------

Блокировка загрузки страницы, при обнаружении отражённой (непостоянной) XSS:


```bash
X-XSS-Protection: 1; mode=block
```


PHP


```php
header("X-XSS-Protection: 1; mode=block");
```


Apache (.htaccess)


```bash
<IfModule mod_headers.c>
  Header set X-XSS-Protection "1; mode=block"
</IfModule>
```

Спецификации
------------

Не является частью каких-либо специфика или черновиков.

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* `Content-Security-Policy` (en-US)
* Controlling the XSS Filter – Microsoft
* Understanding XSS Auditor – Virtue Security
* The misunderstood X-XSS-Protection – blog.innerht.ml
Access-Control-Allow-Headers
============================

Заголовок ответа **`Access-Control-Allow-Headers`** используется в ответ на preflight request (en-US), чтобы указать, какие заголовки HTTP могут использоваться во время фактического запроса.

The simple headers, `Accept`, `Accept-Language`, `Content-Language`, `Content-Type` (но только с MIME-типом, найденным в этом значении (исключая параметры), либо `application/x-www-form-urlencoded`, `multipart/form-data` или `text/plain`), всегда доступны и не должны быть перечислены в этом заголовке.

Этот заголовок обязателен, если запрос содержит заголовок `Access-Control-Request-Headers` (en-US).

|  |  |
| --- | --- |
| Тип заголовка | Response header (en-US) |
| Forbidden header name | нет |

Синтаксис
---------
```

Access-Control-Allow-Headers: <header-name>, <header-name>, ...
```

Директивы
---------

<header-name>

Список поддерживаемых заголовков разделённых запятыми.

Пример
------
```

Access-Control-Allow-Headers: X-Custom-Header
```

Спецификации
------------

| Specification |
| --- |
| Fetch Standard # http-access-control-allow-headers |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Примечания по совместимости
---------------------------

* Подстановочное значение (\*), указанное в последней спецификации, ещё не реализовано в браузерах:
    + Chromium: Issue 615313
    + Firefox: Firefox bug 1309358
    + Servo: Issue 13283
    + WebKit: Issue 165508
Смотрите также
--------------

* `Access-Control-Allow-Origin`
* `Access-Control-Expose-Headers` (en-US)
* `Access-Control-Allow-Methods`
* `Access-Control-Request-Headers` (en-US)
Expires
=======

Заголовок **`Expires`** содержит дату/время, по истечении которой ответ сервера считается устаревшим.

Прошедшая или невалидная дата, например 0, обозначает, что ресурс уже устарел.

Если в ответе с сервера установлен заголовок `Cache-Control` с директивами "max-age" или "s-maxage" , заголовок `Expires` игнорируется.

|  |  |
| --- | --- |
| Тип заголовка | Response header (en-US) |
| Запрещённое имя заголовка | нет |
| CORS безопасный заголовок (en-US) | да |

Синтаксис
---------
```

Expires: <http-date>
```

Директивы
---------

<http-date>

HTTP-дата и время.

Примеры
-------
```

Expires: Wed, 21 Oct 2015 07:28:00 GMT
```

Спецификация
------------

| Specification |
| --- |
| HTTP Caching # field.expires |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* `Cache-Control`
* `Age` (en-US)
Date
====

**`Date`** основной HTTP заголовок содержащий дату и время, в которое сообщение было создано.

|  |  |
| --- | --- |
| Тип заголовка | Основной |
| Запрещённое имя заголовка | да |

Синтаксис
---------
```

Date: <day-name>, <day> <month> <year> <hour>:<minute>:<second> GMT
```

Директивы
---------

<day-name>

Одно из "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", или "Sun" (регистрозависимое значение).

<day>

Номер дня с ведущим нулём, например "04" или "23".

<month>

Один из "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" (регистрозависимое значение).

<year>

Год из 4-х символов, например "1990" или "2016".

<hour>

Часы с ведущим нулём, например "09" или "23".

<minute>

Минуты с ведущим нулём, например "04" или "59".

<second>

Секунды с ведущим нулём, например "04" или "59".

GMT

Время по Гринвичу. HTTP даты всегда представлены в GMT, а не в локальном времени

Примеры
-------
```

Date: Wed, 21 Oct 2015 07:28:00 GMT
```

Спецификации
------------

| Спецификация | Название |
| --- | --- |
| RFC 7231, раздел 7.1.1.2: Date | Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content |

Совместимость с браузерами
--------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Смотрите также
--------------

* `Age` (en-US)