Cloudflare блокирует длинный URL wordpress load-scripts.php

в одном из наших приложений Wordpress у нас есть Cloudflare, и месяц назад мы заметили проблему, заключающуюся в том, что наши javascripts не загружаются. URL-адрес: https://somedomain.com/wp-admin/load-scripts.php?c=0&load%5B%5D=hoverIntent,common,admin-bar,heartbeat,autosave,wp-ajax-response,jquery-color,wp-lists,jquery-query,admin-comments,suggest,jquer&load%5B%5D=y-ui-mouse,jquery-ui-sortable,postbox,tags-suggest,tags-box,word-count,post,editor-expand,thickbox,shortcode,wp-plupload,mediael&load%5B%5D=ement,wp-mediaelement,media-views,media-editor,media-audiovideo,mce-view,image-edit,svg-painter,wp-auth-check,jquery-ui-tabs,jqu&load%5B%5D=ery-ui-draggable,jquery-ui-slider,jquery-touch-punch,iris,wp-color-picker,media-upload,wp-pointer,editor,wplink,wp-embed&ver=4.8.9

Когда мы вводим этот URL-адрес в наш браузер, он показывает страницу Cloudflare и капчу для ввода «Еще один шаг. Пожалуйста, пройдите проверку безопасности для доступа..». Так что, вероятно, URL-адрес слишком длинный, и служба безопасности Cloudflare Owasp видит в этом проблемы.

Эта проблема, вероятно, возникает из-за файла Wordpress load-scripts.php (код ниже), который объединяет файлы в один, и у нас есть много плагинов.

Что мы можем с этим сделать?

  1. Мы могли бы попытаться переписать этот код и разделить этот файл на несколько, но мы бы не хотели изменять файл Wordpress :/
  2. Может быть есть какой-нибудь плагин, который это делает?
function _print_scripts() {
    global $wp_scripts, $compress_scripts;
    $zip = $compress_scripts ? 1 : 0;
    if ( $zip && defined('ENFORCE_GZIP') && ENFORCE_GZIP )
        $zip = 'gzip';
    if ( $concat = trim( $wp_scripts->concat, ', ' ) ) {
        if ( !empty($wp_scripts->print_code) ) {
            echo "\n<script type='text/javascript'>\n";
            echo "/* <![CDATA[ */\n"; // not needed in HTML 5
            echo $wp_scripts->print_code;
            echo "/* ]]> */\n";
            echo "</script>\n";
        }
        $concat = str_split( $concat, 128 );
        $concat = 'load%5B%5D=' . implode( '&load%5B%5D=', $concat );
        $src = $wp_scripts->base_url . "/wp-admin/load-scripts.php?c = {$zip}&" . $concat . '&ver=' . $wp_scripts->default_version;
        echo "<script type='text/javascript' src='" . esc_attr($src) . "'></script>\n";
    }
    if ( !empty($wp_scripts->print_html) )
        echo $wp_scripts->print_html;
}

Мой wordpress foo не слишком силен, но вы пробовали установить define( 'CONCATENATE_SCRIPTS', false ); в своем wp-config.php? Это может быть быстрым решением для запуска вашего сайта. Это немного замедлит начальную загрузку области wp-admin.

Augusto 02.04.2019 15:00
Как убрать количество товаров в категории WooCommerce
Как убрать количество товаров в категории WooCommerce
По умолчанию WooCommerce показывает количество товаров рядом с категорией, как показано ниже.
1
1
621
0

Другие вопросы по теме