6

リクエストのフォーマットに応じて、Symfony2 は同じタイプ (html、css、json など) のレスポンスを返します。これは非常にありがたいことです。しかし、定義された形式でテンプレートを作成し、そのコンテキストでエスケープ文字を実行すると、最終的にページが別の形式でレンダリングされ、危険な出力が生成されるリスクはありませんか?

例: http://symfony.com/it/doc/current/book/index.html?_format=json

危険な出力/予期しない出力を含む可能性のあるリソースを意図せずに作成する危険性がありますか? これは意図的ですか?なんで?

4

1 に答える 1

6

Symfony2 の公式ドキュメントの場合、意図的なものだと思います。ただし、定義された形式でテンプレートを作成し、そのコンテキストでエスケープ文字を実行すると、次のように要求が許可された形式を強制できます。

article_show:
  pattern:  /articles/{culture}/{year}/{title}.{_format}
  defaults: { _controller: AcmeDemoBundle:Article:show, _format: html }
  requirements:
    culture:  en|fr
    _format:  html|rss
    year:     \d+

_formatこの例では、特別なルーティング パラメータが強調されています。このパラメータを使用すると、一致した値が Request オブジェクトの「リクエスト形式」になります。最終的に、リクエスト フォーマットは、レスポンスの Content-Type の設定などに使用されます (たとえば、json リクエスト フォーマットは、application/json の Content-Type に変換されます)。また、コントローラーで使用して、_format の値ごとに異なるテンプレートをレンダリングすることもできます。_format パラメーターは、同じコンテンツを異なる形式でレンダリングするための非常に強力な方法です。続きを読む...

于 2012-06-25T16:19:33.713 に答える