web-dev-qa-db-ja.com

応答からX-generatorヘッダーを削除する

DrupalがX-Generator:Drupal 8で返されるCMSタイプとバージョンの開示を削除したい( https:// www.drupal.org)ヘッダー。

次のコードを使用していますが、x-generatorヘッダーは削除されますが、X-Generator:Drupal 8( https://www.drupal.org )ブラウザーのヘッダー応答で。

function xxx_page_attachments_alter(&$data, &$context1 = NULL, &$context2 = NULL) {
    foreach ($data['#attached']['html_head'] as $key => $attachment) {
        if ($attachment[1] == 'system_meta_generator') {
          unset($data['#attached']['html_head'][$key]);
        }
    }
}

コードを修正するにはどうすればよいですか?

5
gaurav

最も簡単な方法は、カスタムEventSubscriberのヘッダーを削除することです。

$response->headers->remove('X-Generator');

例については https://drupal.stackexchange.com/a/201297/47547 を参照してください。

5
4k4

それはまさにあなたが尋ねている質問ではありませんが...

自分のサイトの実行に使用しているものを不明瞭にする方法はありますか? この問題への取り組みを検討しているときに役立つ場合に備えて、ここに回答として追加します。

0
greggles

以下のリンクを確認してください、それを行うために作成されたカスタムモジュール。

@ https://github.com/vikrantrc/Remove-X-Generator

0
Vikrant Ramteke

@gauravも機能するはずです。私にとってはうまくいくようです

function THEMENAME_page_attachments_alter(&$data) {
  foreach ($data['#attached']['html_head'] as $key => $attachment) {
    if ($attachment[1] == 'system_meta_generator') {
      unset($data['#attached']['html_head'][$key]);
    }
  }
}
0
GiorgosK

これを行う最も簡単な方法は、response_generator_subscriber追加を担当するサービスX-Generatorそもそも。それはすべてですので、(コアのテスト以外の)何もそれに依存するべきではありません。

単にDrupal\Core\DependencyInjection\ServiceProviderInterface次のようにモジュールに実装します。

my_module/src/MyModuleServiceProvider.php:

<?php

namespace Drupal\ws_main;

use Drupal\Core\DependencyInjection\ContainerBuilder;
use Drupal\Core\DependencyInjection\ServiceProviderBase;

/**
 * Remove the service adding the X-Generator header.
 */
class MyModuleServiceProvider extends ServiceProviderBase {

  /**
   * {@inheritdoc}
   */
  public function alter(ContainerBuilder $container) {
    $container->removeDefinition('response_generator_subscriber');
  }

}

注意する必要があるのは、クラス(およびファイル名)がモジュールのマシン名のキャメルケースバージョン(最初の文字は大文字、アンダースコアを削除して次の文字を大文字にする)である必要があるということです サービスの変更に関するドキュメント 。キャッシュをクリアした後(サービスレジストリを再構築した場合)、この方法では、すべての応答でヘッダーを追加してから削除する場合と比較して、パフォーマンスがわずかに向上するはずです。

0
TwoD