PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.2-a.1
Jetpack – WP Security, Backup, Speed, & Growth v16.2-a.1
16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / jetpack_vendor / automattic / jetpack-status / src / class-request.php
jetpack / jetpack_vendor / automattic / jetpack-status / src Last commit date
class-cache.php 2 years ago class-cookiestate.php 2 months ago class-errors.php 8 months ago class-files.php 2 years ago class-host.php 3 days ago class-modules.php 1 month ago class-paths.php 2 years ago class-request.php 8 months ago class-status.php 3 days ago class-visitor.php 3 days ago
class-request.php
113 lines
1 <?php
2 /**
3 * Get information about the current request.
4 *
5 * @package automattic/jetpack-status
6 */
7
8 namespace Automattic\Jetpack\Status;
9
10 use Automattic\Jetpack\Constants;
11
12 /**
13 * Get information about the current request.
14 */
15 class Request {
16 /**
17 * Determine whether the current request is for accessing the frontend.
18 * Also update Vary headers to indicate that the response may vary by Accept header.
19 *
20 * @since 6.0.3 Added $send_vary_headers argument.
21 *
22 * @param bool $send_vary_headers Whether to send Vary headers.
23 *
24 * @return bool True if it's a frontend request, false otherwise.
25 */
26 public static function is_frontend( $send_vary_headers = true ) {
27 $is_frontend = true;
28 $is_varying_request = true;
29
30 if (
31 is_admin()
32 || wp_doing_ajax()
33 || wp_is_jsonp_request()
34 || is_feed()
35 || Constants::is_true( 'REST_REQUEST' )
36 || Constants::is_true( 'REST_API_REQUEST' )
37 || Constants::is_true( 'WP_CLI' )
38 || Constants::is_true( 'WPCOM_CLI_SCRIPT' ) // Special case for CLI scripts on WP.com that aren't using WP CLI.
39 ) {
40 $is_frontend = false;
41 $is_varying_request = false;
42 } elseif (
43 wp_is_json_request()
44 || wp_is_xml_request()
45 ) {
46 $is_frontend = false;
47 }
48
49 /*
50 * Check existing headers for the request.
51 * If there is no existing Vary Accept header, add one.
52 */
53 if ( $send_vary_headers && $is_varying_request && ! headers_sent() ) {
54 $headers = headers_list();
55 $vary_header_parts = self::get_vary_headers( $headers );
56
57 header( 'Vary: ' . implode( ', ', $vary_header_parts ) );
58 }
59
60 /**
61 * Filter whether the current request is for accessing the frontend.
62 *
63 * @since jetpack-9.0.0
64 * @since 6.0.3 Added $send_vary_headers argument.
65 *
66 * @param bool $is_frontend Whether the current request is for accessing the frontend.
67 * @param bool $send_vary_headers Whether to send Vary headers.
68 */
69 return (bool) apply_filters( 'jetpack_is_frontend', $is_frontend, $send_vary_headers );
70 }
71
72 /**
73 * Go through headers and get a list of Vary headers to add,
74 * including Vary on Accept and Content-Type if necessary.
75 *
76 * @since jetpack-12.2
77 *
78 * @param array $headers The headers to be sent.
79 *
80 * @return array $vary_header_parts Vary Headers to be sent.
81 */
82 public static function get_vary_headers( $headers = array() ) {
83 $vary_header_parts = array( 'accept', 'content-type' );
84
85 foreach ( $headers as $header ) {
86 // Check for a Vary header.
87 if ( ! str_starts_with( strtolower( $header ), 'vary:' ) ) {
88 continue;
89 }
90
91 // If the header is a wildcard, we'll return that.
92 if ( str_contains( $header, '*' ) ) {
93 $vary_header_parts = array( '*' );
94 break;
95 }
96
97 // Remove the Vary: part of the header.
98 $header = preg_replace( '/^vary\:\s?/i', '', $header );
99
100 // Remove spaces from the header.
101 $header = str_replace( ' ', '', $header );
102
103 // Break the header into parts.
104 $header_parts = explode( ',', strtolower( $header ) );
105
106 // Build an array with the Accept header and what was already there.
107 $vary_header_parts = array_values( array_unique( array_merge( $vary_header_parts, $header_parts ) ) );
108 }
109
110 return $vary_header_parts;
111 }
112 }
113