Examine individual changes
Appearance
This page allows you to examine the variables generated by the Edit Filter for an individual change.
Variables generated for this change
Variable | Value |
---|---|
Edit count of the user (user_editcount ) | null |
Name of the user account (user_name ) | '202.165.90.42' |
Age of the user account (user_age ) | 0 |
Groups (including implicit) the user is in (user_groups ) | [
0 => '*'
] |
Rights that the user has (user_rights ) | [
0 => 'createaccount',
1 => 'read',
2 => 'edit',
3 => 'createtalk',
4 => 'writeapi',
5 => 'viewmywatchlist',
6 => 'editmywatchlist',
7 => 'viewmyprivateinfo',
8 => 'editmyprivateinfo',
9 => 'editmyoptions',
10 => 'abusefilter-log-detail',
11 => 'urlshortener-create-url',
12 => 'centralauth-merge',
13 => 'abusefilter-view',
14 => 'abusefilter-log',
15 => 'vipsscaler-test'
] |
Whether the user is editing from mobile app (user_app ) | false |
Whether or not a user is editing through the mobile interface (user_mobile ) | true |
Page ID (page_id ) | 1674267 |
Page namespace (page_namespace ) | 0 |
Page title without namespace (page_title ) | 'Content negotiation' |
Full page title (page_prefixedtitle ) | 'Content negotiation' |
Edit protection level of the page (page_restrictions_edit ) | [] |
Last ten users to contribute to the page (page_recent_contributors ) | [
0 => 'Citation bot',
1 => 'Cyfal',
2 => 'Edsu',
3 => 'Gscscnd',
4 => '223.24.153.7',
5 => '84.147.35.28',
6 => 'DannyS712 bot',
7 => 'Cedar101',
8 => 'Arjayay',
9 => 'Provenator'
] |
Page age in seconds (page_age ) | 536825359 |
Action (action ) | 'edit' |
Edit summary/reason (summary ) | '' |
Old content model (old_content_model ) | 'wikitext' |
New content model (new_content_model ) | 'wikitext' |
Old page wikitext, before the edit (old_wikitext ) | '{{HTTP}}
'''Content negotiation''' refers to mechanisms defined as a part of [[HTTP]] that make it possible to serve different versions of a document (or more generally, representations of a resource) at the same [[Uniform Resource Identifier|URI]], so that [[user agent]]s can specify which version fits their capabilities the best. One classical use of this mechanism is to serve an image in [[GIF]] or [[Portable Network Graphics|PNG]] format, so that a browser that cannot display PNG images (e.g. MS Internet Explorer 4) will be served the GIF version.
A resource may be available in several different representations; for example, it might be available in different languages or different media types. One way of selecting the most appropriate choice is to give the user an index page and let them select the most appropriate choice; however it is often possible to automate the choice based on some selection criteria.
==Mechanisms==
HTTP provides for several different content negotiation mechanisms including: server-driven (or proactive), agent-driven (or reactive), transparent, and/or hybrid combinations thereof.
===Server-driven===
Server-driven or proactive content negotiation is performed by algorithms on the server which choose among the possible variant representations. This is commonly performed based on user agent-provided acceptance criteria.
To summarize how this works, when a user agent submits a request to a server, the user agent informs the server what [[media type]]s or other aspects of content presentation it understands with ratings of how well it understands them. More precisely, the user agent provides [[List of HTTP header fields|HTTP header]]s that lists acceptable aspects of the resource and quality factors for them. The server is then able to supply the version of the resource that best fits the user agent's needs.
For example, a browser could indicate that it would like information in German by setting the <code>Accept-Language</code> like this:
<code>Accept-Language: de</code>
The browser may instead say that German is preferred, if possible, but that English is also acceptable by setting:
<code>Accept-Language: de; q=1.0, en; q=0.5</code>
Where the 'q' - quality - factor for German is higher than that for English.
Multiple HTTP headers are often supplied together for content format or, specifically media type, language and a few other aspects of a resource. In addition to the commonly used <code>Accept</code> header for Media Type, the <code>Accept-Language</code> header for language negotiation, RFC 7231 also describes <code>Accept-Charset</code> & <code>Accept-Encodings</code> for character encodings and content codings (compression) respectively.
An example of a more complex request is where a browser sends headers about language indicating German is preferred but that English is acceptable, as above, and that, regarding formats, [[HTML]] (<code>text/html</code>) is preferred over other text types (<code>text/*</code>) , GIF (<code>image/gif</code>) or [[JPEG]] (<code>image/jpg</code>) images are preferred over other image formats (<code>image/*</code>) but that any other media type (<code>*/*</code>) is accepted as a last resort:
<syntaxhighlight lang="email">Accept-Language: de; q=1.0, en; q=0.5
Accept: text/html; q=1.0, text/*; q=0.8, image/gif; q=0.6, image/jpeg; q=0.6, image/*; q=0.5, */*; q=0.1</syntaxhighlight>
In addition to aspects of server-driven content negotiation by [[Internet media type|content type]] and by [[IETF language tag|language]] specified in RFC 7231, there are extensions defining other aspects of content negotiation, such as ''Memento'' which describes use of a <code>Accept-Datetime</code> header to retrieve version of a resource's representation at particular points in time<ref>[http://www.mementoweb.org/ Memento: Adding Time to the Web]. Mementoweb.org. Retrieved on 2013-09-08.</ref> and the IETF/W3C's ''Content Negotiation by Profile''<ref name="connegp">{{cite web|url=https://www.w3.org/TR/dx-prof-conneg/ | title=World Wide Web Consortium (W3C), "Content Negotiation by Profile", W3C Working Draft, 26 November 2019.}}</ref> which describes use of an <code>Accept-Profile</code> header to retrieve resource representations conforming to data profiles.
Neither RFC 7231 nor the more recent related specifications such as ''Content Negotiation by Profile''<ref name="connegp" /> specify how to resolve trade-offs in cases where different headers specify conflicting requirements, such as, in the above example, choosing between an HTML page in English and a GIF image in German.
===Agent-driven===
{{See also|Adaptive web design}}
Agent-driven or reactive content negotiation is performed by algorithms in the user-agent which choose among the possible variant representations. This is commonly performed based on a server provided list of representations and metadata about them.
To summarize how this works, when a user agent submits a request to a server, the server informs the user-agent which representations it has available as well as any metadata it has about each representation (e.g., content-type, quality, language, etc.). The user-agent then resubmits the request to a specific URL for the chosen representation. This can be automatically chosen by the user-agent or the user-agent can present the user with the choices and the user can directly choose such. More precisely, the server responds with either 300 Multiple Choices or 406 Not Acceptable (when server-driven, user-agent acceptance criteria are provided but the server cannot automatically make a selection). Unfortunately HTTP leaves the format of the list of representations and metadata along with selection mechanisms unspecified.
<!-- Expand on these later
===Transparent===
===Hybrid===
-->
==References==
{{reflist}}
==External links==
*RFC 7231 — ''Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content'' – ([https://datatracker.ietf.org/doc/html/rfc7231#section-5.3 Section 5.3: Content Negotiation])
*RFC 2295 — ''Transparent Content Negotiation in HTTP''
*RFC 2296 — ''HTTP Remote Variant Selection Algorithm -- RVSA/1.0''
*[http://httpd.apache.org/docs/current/content-negotiation.html Apache Content Negotiation]
*[http://ptlis.net/source/php-content-negotiation/ Open source PHP content negotiation library (supports wildcards and q values)]
*[https://web.archive.org/web/20170112181538/http://www.dev-archive.net/articles/xhtml.html#content-negotiation Discussion about XHTML serving with content negotiation and browser concerns requiring this]
:This article is based in part on [http://httpd.apache.org/docs/1.3/content-negotiation.html this page], which is copyrighted by the Apache Foundation but released under a free license. [[Category:Hypertext Transfer Protocol]]' |
New page wikitext, after the edit (new_wikitext ) | '' |
Unified diff of changes made by edit (edit_diff ) | '@@ -1,56 +1,0 @@
-{{HTTP}}
-'''Content negotiation''' refers to mechanisms defined as a part of [[HTTP]] that make it possible to serve different versions of a document (or more generally, representations of a resource) at the same [[Uniform Resource Identifier|URI]], so that [[user agent]]s can specify which version fits their capabilities the best. One classical use of this mechanism is to serve an image in [[GIF]] or [[Portable Network Graphics|PNG]] format, so that a browser that cannot display PNG images (e.g. MS Internet Explorer 4) will be served the GIF version.
-
-A resource may be available in several different representations; for example, it might be available in different languages or different media types. One way of selecting the most appropriate choice is to give the user an index page and let them select the most appropriate choice; however it is often possible to automate the choice based on some selection criteria.
-
-==Mechanisms==
-HTTP provides for several different content negotiation mechanisms including: server-driven (or proactive), agent-driven (or reactive), transparent, and/or hybrid combinations thereof.
-
-===Server-driven===
-Server-driven or proactive content negotiation is performed by algorithms on the server which choose among the possible variant representations. This is commonly performed based on user agent-provided acceptance criteria.
-
-To summarize how this works, when a user agent submits a request to a server, the user agent informs the server what [[media type]]s or other aspects of content presentation it understands with ratings of how well it understands them. More precisely, the user agent provides [[List of HTTP header fields|HTTP header]]s that lists acceptable aspects of the resource and quality factors for them. The server is then able to supply the version of the resource that best fits the user agent's needs.
-
-For example, a browser could indicate that it would like information in German by setting the <code>Accept-Language</code> like this:
-
-<code>Accept-Language: de</code>
-
-The browser may instead say that German is preferred, if possible, but that English is also acceptable by setting:
-
-<code>Accept-Language: de; q=1.0, en; q=0.5</code>
-
-Where the 'q' - quality - factor for German is higher than that for English.
-
-Multiple HTTP headers are often supplied together for content format or, specifically media type, language and a few other aspects of a resource. In addition to the commonly used <code>Accept</code> header for Media Type, the <code>Accept-Language</code> header for language negotiation, RFC 7231 also describes <code>Accept-Charset</code> & <code>Accept-Encodings</code> for character encodings and content codings (compression) respectively.
-
-An example of a more complex request is where a browser sends headers about language indicating German is preferred but that English is acceptable, as above, and that, regarding formats, [[HTML]] (<code>text/html</code>) is preferred over other text types (<code>text/*</code>) , GIF (<code>image/gif</code>) or [[JPEG]] (<code>image/jpg</code>) images are preferred over other image formats (<code>image/*</code>) but that any other media type (<code>*/*</code>) is accepted as a last resort:
-<syntaxhighlight lang="email">Accept-Language: de; q=1.0, en; q=0.5
-Accept: text/html; q=1.0, text/*; q=0.8, image/gif; q=0.6, image/jpeg; q=0.6, image/*; q=0.5, */*; q=0.1</syntaxhighlight>
-In addition to aspects of server-driven content negotiation by [[Internet media type|content type]] and by [[IETF language tag|language]] specified in RFC 7231, there are extensions defining other aspects of content negotiation, such as ''Memento'' which describes use of a <code>Accept-Datetime</code> header to retrieve version of a resource's representation at particular points in time<ref>[http://www.mementoweb.org/ Memento: Adding Time to the Web]. Mementoweb.org. Retrieved on 2013-09-08.</ref> and the IETF/W3C's ''Content Negotiation by Profile''<ref name="connegp">{{cite web|url=https://www.w3.org/TR/dx-prof-conneg/ | title=World Wide Web Consortium (W3C), "Content Negotiation by Profile", W3C Working Draft, 26 November 2019.}}</ref> which describes use of an <code>Accept-Profile</code> header to retrieve resource representations conforming to data profiles.
-
-Neither RFC 7231 nor the more recent related specifications such as ''Content Negotiation by Profile''<ref name="connegp" /> specify how to resolve trade-offs in cases where different headers specify conflicting requirements, such as, in the above example, choosing between an HTML page in English and a GIF image in German.
-
-===Agent-driven===
-{{See also|Adaptive web design}}
-Agent-driven or reactive content negotiation is performed by algorithms in the user-agent which choose among the possible variant representations. This is commonly performed based on a server provided list of representations and metadata about them.
-
-To summarize how this works, when a user agent submits a request to a server, the server informs the user-agent which representations it has available as well as any metadata it has about each representation (e.g., content-type, quality, language, etc.). The user-agent then resubmits the request to a specific URL for the chosen representation. This can be automatically chosen by the user-agent or the user-agent can present the user with the choices and the user can directly choose such. More precisely, the server responds with either 300 Multiple Choices or 406 Not Acceptable (when server-driven, user-agent acceptance criteria are provided but the server cannot automatically make a selection). Unfortunately HTTP leaves the format of the list of representations and metadata along with selection mechanisms unspecified.
-
-<!-- Expand on these later
-===Transparent===
-===Hybrid===
--->
-
-==References==
-{{reflist}}
-
-==External links==
-*RFC 7231 — ''Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content'' – ([https://datatracker.ietf.org/doc/html/rfc7231#section-5.3 Section 5.3: Content Negotiation])
-*RFC 2295 — ''Transparent Content Negotiation in HTTP''
-*RFC 2296 — ''HTTP Remote Variant Selection Algorithm -- RVSA/1.0''
-*[http://httpd.apache.org/docs/current/content-negotiation.html Apache Content Negotiation]
-*[http://ptlis.net/source/php-content-negotiation/ Open source PHP content negotiation library (supports wildcards and q values)]
-*[https://web.archive.org/web/20170112181538/http://www.dev-archive.net/articles/xhtml.html#content-negotiation Discussion about XHTML serving with content negotiation and browser concerns requiring this]
-
-
-:This article is based in part on [http://httpd.apache.org/docs/1.3/content-negotiation.html this page], which is copyrighted by the Apache Foundation but released under a free license. [[Category:Hypertext Transfer Protocol]]
' |
New page size (new_size ) | 0 |
Old page size (old_size ) | 6828 |
Size change in edit (edit_delta ) | -6828 |
Lines added in edit (added_lines ) | [] |
Lines removed in edit (removed_lines ) | [
0 => '{{HTTP}}',
1 => ''''Content negotiation''' refers to mechanisms defined as a part of [[HTTP]] that make it possible to serve different versions of a document (or more generally, representations of a resource) at the same [[Uniform Resource Identifier|URI]], so that [[user agent]]s can specify which version fits their capabilities the best. One classical use of this mechanism is to serve an image in [[GIF]] or [[Portable Network Graphics|PNG]] format, so that a browser that cannot display PNG images (e.g. MS Internet Explorer 4) will be served the GIF version.',
2 => '',
3 => 'A resource may be available in several different representations; for example, it might be available in different languages or different media types. One way of selecting the most appropriate choice is to give the user an index page and let them select the most appropriate choice; however it is often possible to automate the choice based on some selection criteria.',
4 => '',
5 => '==Mechanisms==',
6 => 'HTTP provides for several different content negotiation mechanisms including: server-driven (or proactive), agent-driven (or reactive), transparent, and/or hybrid combinations thereof.',
7 => '',
8 => '===Server-driven===',
9 => 'Server-driven or proactive content negotiation is performed by algorithms on the server which choose among the possible variant representations. This is commonly performed based on user agent-provided acceptance criteria.',
10 => '',
11 => 'To summarize how this works, when a user agent submits a request to a server, the user agent informs the server what [[media type]]s or other aspects of content presentation it understands with ratings of how well it understands them. More precisely, the user agent provides [[List of HTTP header fields|HTTP header]]s that lists acceptable aspects of the resource and quality factors for them. The server is then able to supply the version of the resource that best fits the user agent's needs.',
12 => '',
13 => 'For example, a browser could indicate that it would like information in German by setting the <code>Accept-Language</code> like this:',
14 => '',
15 => '<code>Accept-Language: de</code>',
16 => '',
17 => 'The browser may instead say that German is preferred, if possible, but that English is also acceptable by setting:',
18 => '',
19 => '<code>Accept-Language: de; q=1.0, en; q=0.5</code>',
20 => '',
21 => 'Where the 'q' - quality - factor for German is higher than that for English.',
22 => '',
23 => 'Multiple HTTP headers are often supplied together for content format or, specifically media type, language and a few other aspects of a resource. In addition to the commonly used <code>Accept</code> header for Media Type, the <code>Accept-Language</code> header for language negotiation, RFC 7231 also describes <code>Accept-Charset</code> & <code>Accept-Encodings</code> for character encodings and content codings (compression) respectively.',
24 => '',
25 => 'An example of a more complex request is where a browser sends headers about language indicating German is preferred but that English is acceptable, as above, and that, regarding formats, [[HTML]] (<code>text/html</code>) is preferred over other text types (<code>text/*</code>) , GIF (<code>image/gif</code>) or [[JPEG]] (<code>image/jpg</code>) images are preferred over other image formats (<code>image/*</code>) but that any other media type (<code>*/*</code>) is accepted as a last resort:',
26 => '<syntaxhighlight lang="email">Accept-Language: de; q=1.0, en; q=0.5',
27 => 'Accept: text/html; q=1.0, text/*; q=0.8, image/gif; q=0.6, image/jpeg; q=0.6, image/*; q=0.5, */*; q=0.1</syntaxhighlight>',
28 => 'In addition to aspects of server-driven content negotiation by [[Internet media type|content type]] and by [[IETF language tag|language]] specified in RFC 7231, there are extensions defining other aspects of content negotiation, such as ''Memento'' which describes use of a <code>Accept-Datetime</code> header to retrieve version of a resource's representation at particular points in time<ref>[http://www.mementoweb.org/ Memento: Adding Time to the Web]. Mementoweb.org. Retrieved on 2013-09-08.</ref> and the IETF/W3C's ''Content Negotiation by Profile''<ref name="connegp">{{cite web|url=https://www.w3.org/TR/dx-prof-conneg/ | title=World Wide Web Consortium (W3C), "Content Negotiation by Profile", W3C Working Draft, 26 November 2019.}}</ref> which describes use of an <code>Accept-Profile</code> header to retrieve resource representations conforming to data profiles.',
29 => '',
30 => 'Neither RFC 7231 nor the more recent related specifications such as ''Content Negotiation by Profile''<ref name="connegp" /> specify how to resolve trade-offs in cases where different headers specify conflicting requirements, such as, in the above example, choosing between an HTML page in English and a GIF image in German.',
31 => '',
32 => '===Agent-driven===',
33 => '{{See also|Adaptive web design}}',
34 => 'Agent-driven or reactive content negotiation is performed by algorithms in the user-agent which choose among the possible variant representations. This is commonly performed based on a server provided list of representations and metadata about them.',
35 => '',
36 => 'To summarize how this works, when a user agent submits a request to a server, the server informs the user-agent which representations it has available as well as any metadata it has about each representation (e.g., content-type, quality, language, etc.). The user-agent then resubmits the request to a specific URL for the chosen representation. This can be automatically chosen by the user-agent or the user-agent can present the user with the choices and the user can directly choose such. More precisely, the server responds with either 300 Multiple Choices or 406 Not Acceptable (when server-driven, user-agent acceptance criteria are provided but the server cannot automatically make a selection). Unfortunately HTTP leaves the format of the list of representations and metadata along with selection mechanisms unspecified.',
37 => '',
38 => '<!-- Expand on these later',
39 => '===Transparent===',
40 => '===Hybrid===',
41 => '-->',
42 => '',
43 => '==References==',
44 => '{{reflist}}',
45 => '',
46 => '==External links==',
47 => '*RFC 7231 — ''Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content'' – ([https://datatracker.ietf.org/doc/html/rfc7231#section-5.3 Section 5.3: Content Negotiation])',
48 => '*RFC 2295 — ''Transparent Content Negotiation in HTTP''',
49 => '*RFC 2296 — ''HTTP Remote Variant Selection Algorithm -- RVSA/1.0''',
50 => '*[http://httpd.apache.org/docs/current/content-negotiation.html Apache Content Negotiation]',
51 => '*[http://ptlis.net/source/php-content-negotiation/ Open source PHP content negotiation library (supports wildcards and q values)]',
52 => '*[https://web.archive.org/web/20170112181538/http://www.dev-archive.net/articles/xhtml.html#content-negotiation Discussion about XHTML serving with content negotiation and browser concerns requiring this]',
53 => '',
54 => '',
55 => ':This article is based in part on [http://httpd.apache.org/docs/1.3/content-negotiation.html this page], which is copyrighted by the Apache Foundation but released under a free license. [[Category:Hypertext Transfer Protocol]]'
] |
All external links added in the edit (added_links ) | [] |
All external links removed in the edit (removed_links ) | [
0 => 'http://httpd.apache.org/docs/1.3/content-negotiation.html',
1 => 'http://httpd.apache.org/docs/current/content-negotiation.html',
2 => 'http://ptlis.net/source/php-content-negotiation/',
3 => 'http://www.mementoweb.org/',
4 => 'https://datatracker.ietf.org/doc/html/rfc7231#section-5.3',
5 => 'https://web.archive.org/web/20170112181538/http://www.dev-archive.net/articles/xhtml.html#content-negotiation',
6 => 'https://www.w3.org/TR/dx-prof-conneg/'
] |
All external links in the new text (all_links ) | [] |
Links in the page, before the edit (old_links ) | [
0 => 'http://httpd.apache.org/docs/1.3/content-negotiation.html',
1 => 'http://httpd.apache.org/docs/current/content-negotiation.html',
2 => 'http://ptlis.net/source/php-content-negotiation/',
3 => 'http://www.mementoweb.org/',
4 => 'https://datatracker.ietf.org/doc/html/rfc7231#section-5.3',
5 => 'https://web.archive.org/web/20170112181538/http://www.dev-archive.net/articles/xhtml.html#content-negotiation',
6 => 'https://www.w3.org/TR/dx-prof-conneg/'
] |
Whether or not the change was made through a Tor exit node (tor_exit_node ) | false |
Unix timestamp of change (timestamp ) | 1649095364 |