demander


Demande HTTP

Accepter les demandes

Pour obtenir l'instance de requête HTTP actuelle via l'injection de dépendances, vous devez introduire la classe IlluminateHttpRequest sur le contrôleur, et l'instance de requête entrante sera automatiquement injectée par le conteneur de service : IlluminateHttpRequest 类, 传入的请求实例将会由 服务容器 自动注入:

<?php
  namespace App\Http\Controllers;
  use Illuminate\Http\Request;
  class UserController extends Controller{    
      /**
     * 存储一个新用户。
     *
     * @param  Request  $request
     * @return Response
     */   
   public function store(Request $request)  
     {       
        $name = $request->input('name');       
         //   
       }
    }

依赖注入 & 路由参数

如果你的控制器需要从路由参数中获取数据,你应该在其他依赖项之后列入参数。举个例子,你的路由是这样定义的:

Route::put('user/{id}', 'UserController@update');

你可以通过下面的方法来定义控制器,使用  IlluminateHttpRequest 类来获取你的路由参数 id

<?php
  namespace App\Http\Controllers;
  use Illuminate\Http\Request;
  class UserController extends Controller{   
     /**
     * 更新指定用户
     *
     * @param  Request  $request
     * @param  string  $id
     * @return Response
     */   
      public function update(Request $request, $id)   
       {      
         //   
        }
    }

通过闭包路由获取参数

你也可以在路由闭包中使用 IlluminateHttpRequest 类, 服务容器会自动的将请求参数注入到路由闭包中:

use Illuminate\Http\Request;
Route::get('/', function (Request $request) { 
   //
 });

请求路径 & 方法

IlluminateHttpRequest 实例提供了一系列方法来验证 HTTP 请求参数,并继承了 SymfonyComponentHttpFoundationRequest

$uri = $request->path();
< div name=" d83a24" data-unique="d83a24">

Paramètres d'injection de dépendances et de route

Si votre contrôleur a besoin d'obtenir des données à partir des paramètres de route, vous devez les inclure après les autres paramètres de dépendances. Par exemple, votre itinéraire est défini comme ceci :
if ($request->is('admin/*')) {  
  //
 }
🎜Vous pouvez définir le contrôleur via la méthode suivante, utilisez la classe IlluminateHttpRequest pour obtenir votre paramètre d'itinéraire id :🎜
// 不附带查询串...
$url = $request->url();
// 附带查询串...
$url = $request->fullUrl();
🎜

Obtenir les paramètres via le routage de fermeture

🎜Vous pouvez également utiliser IlluminateHttpRequest dans la classe de fermetures de routage, le conteneur de service le fera injecter automatiquement les paramètres de la requête dans la fermeture de routage : 🎜
$method = $request->method();if ($request->isMethod('post')) { 
   //
}
🎜🎜🎜
🎜

Request path & méthode

🎜IlluminateHttpRequest fournit une série de méthodes pour vérifier les paramètres de requête HTTP et hérite de la classe SymfonyComponentHttpFoundationRequest. Voici quelques méthodes importantes de ce cours : 🎜🎜🎜

Obtenir le chemin de la requête

La méthode path renvoie les informations de chemin demandées. Ainsi, si le chemin demandé est http://domain.com/foo/bar, la méthode path renverra foo/bar :path  方法返回请求的路径信息。所以,如果请求的路径是 http://domain.com/foo/barpath 方法将会返回 foo/bar:

composer require symfony/psr-http-message-bridge
composer require zendframework/zend-diactoros

is 可以验证传入的请求路径是否与给定的模式匹配。 在这个方法中,你也可以使用  * 字符作为通配符:

use Psr\Http\Message\ServerRequestInterface;
Route::get('/', function (ServerRequestInterface $request) { 
   //
 });

获取请求 URL

可以使用 urlfullUrl 方法获取完整的请求 URL。  url 方法返回不含有查询串的 URL, fullUrl 获取包含查询串的 URL:

$input = $request->all();

获取请求 Method

method 方法返回请求的 HTTP 动作。还可以使用 isMethod 方法校验 HTTP 动作是否与给定的客串上匹配:

$name = $request->input('name');

PSR-7 请求

PSR-7 standard 定义了 HTTP 消息接口,包括 请求 和 响应。如果你想用 PSR-7 请求代替 Laravel 请求,需要先安装几个库。 Laravel 使用 Symfony HTTP Message Bridge 组件将典型的 Laravel 请求 和 响应 转换为 PSR-7 兼容实现:

$name = $request->input('name', 'Sally');

一旦安装了这些库,就可以通过在路由闭包或控制器方法中的请求接口类型提示来获取 PSR-7 请求:

$name = $request->input('products.0.name');
$names = $request->input('products.*.name');

{tip} 如果从路由或控制器返回 PSR-7 响应实例,框架会自动将其转换回 Laravel 响应实例并显示。

输入的裁剪和标准化

默认情况下,Laravel 在应用的全局中间件堆栈中包含了 TrimStringsConvertEmptyStringsToNull 中间件。这些中间件被放在 AppHttpKernel 类的堆栈列表中。它们自动裁剪请求中的所有输入字符串域,同时将空字符串域转换为 null。这样一来,你就不必担心路由和控制器中的标准化规约问题。

如果想要禁用这个行为,只需要通过从 AppHttpKernel 类的 $middleware 属性中移除它(相当于从应用的中间件堆栈中移除)。

获取输入

获取所有的输入数据

可以使用 all

$input = $request->input();

is peut vérifier si le chemin de la requête entrante correspond à un modèle donné. Dans cette méthode, vous pouvez également utiliser les caractères * comme caractères génériques :
$name = $request->query('name');
🎜Obtenir l'URL de la requête🎜🎜Vous pouvez utiliser méthode url ou fullUrl pour obtenir l'URL complète de la requête. La méthode url renvoie une URL qui ne contient pas de chaîne de requête, et fullUrl obtient une URL qui contient une chaîne de requête : 🎜
$name = $request->query('name', 'Helen');
🎜 🎜Get request Method🎜🎜La méthode method renvoie l'action HTTP demandée. Vous pouvez également utiliser la méthode isMethod pour vérifier que l'action HTTP correspond à l'invité donné : 🎜
$query = $request->query();
🎜🎜
🎜

Requête PSR-7

🎜La norme PSR-7 définit l'interface de message HTTP, y compris les requêtes et les réponses. Si vous souhaitez utiliser les requêtes PSR-7 au lieu des requêtes Laravel, vous devez d'abord installer plusieurs bibliothèques. Laravel utilise le composant Symfony HTTP Message Bridge pour convertir les requêtes et réponses typiques de Laravel en implémentations compatibles PSR-7 : 🎜
$name = $request->name;
🎜Une fois ces bibliothèques installées, elles peuvent être transmises dans des fermetures de routes ou des méthodes de contrôleur. La requête astuce de type d'interface pour obtenir une requête PSR-7 : 🎜
$name = $request->input('user.name');
🎜{tip} Si une instance de réponse PSR-7 est renvoyée par une route ou un contrôleur, le framework la reconvertira automatiquement en instance de réponse Laravel et l'affichera . 🎜
🎜🎜
🎜

Découpage et normalisation des entrées< / h2>🎜Par défaut, Laravel inclut les middlewares TrimStrings et ConvertEmptyStringsToNull dans la pile middleware globale de l'application. Ces middlewares sont placés dans la liste de pile de la classe AppHttpKernel. Ils suppriment automatiquement tous les champs de chaîne d'entrée dans la requête, tout en convertissant les champs de chaîne vides en null. De cette façon, vous n'avez pas à vous soucier des conventions standardisées en matière de routage et de contrôleurs. 🎜🎜Si vous souhaitez désactiver ce comportement, supprimez-le simplement de l'attribut $middleware de la classe AppHttpKernel (équivalent à le supprimer de la pile middleware de l'application). 🎜🎜🎜
🎜

Obtenir une entrée

🎜🎜Obtenir toutes les données d'entrée🎜🎜Vous pouvez utiliser la méthode all pour obtenir tous les tableaux de données d'entrée : 🎜
$input = $request->only(['username', 'password']);
$input = $request->only('username', 'password');
$input = $request->except(['credit_card']);
$input = $request->except('credit_card');
🎜🎜

Obtenez une seule valeur d'entrée

En utilisant quelques méthodes simples, vous pouvez obtenir toutes les entrées de l'utilisateur via l'instance IlluminateHttpRequest, sans vous soucier de l'action HTTP demandée par l'utilisateur. Quelle que soit l'action HTTP, la requête de l'utilisateur peut être obtenue par la méthode input : IlluminateHttpRequest 实例获取用户的全部输入,不需要担心用户请求用的是哪种 HTTP 动作。无论哪种 HTTP 动作, 用户的请求都能被 input 方法获取:

if ($request->has('name')) { 
   //
 }

可以将默认值作为传递给 input 方法的第二个参数。这个值将在请求没有包含该参数时被返回:

if ($request->has(['name', 'email'])) { 
   //
 }

当与包含数组输入的表单协作时,使用 「点」 运算符访问数组元素:

if ($request->filled('name')) { 
   //
 }

不带参数调用 input 方法,能够获取全部输入值(关联数组形式):

$request->flash();

从查询串中获取输入

input 方法从整个请求载体中获取值(包括查询串), query 方法则仅从查询串中获取值:

$request->flashOnly(['username', 'email']);$request->flashExcept('password');

如果查询串值不存在,query 方法的第二个参数将被作为该参数的默认值被返回:

return redirect('form')->withInput();
return redirect('form')->withInput( 
   $request->except('password')
  );

不带参数调用 query 方法,能够获取查询串的所有值(关联数组形式):

$username = $request->old('username');

通过动态属性获取输入

可以通过 IlluminateHttpRequest 实例的动态属性访问用户输入。例如,如果应用表单包含 name 域,可以像下面这样访问该域的值:

<input type="text" name="username" value="{{ old('username') }}">

在使用动态属性时,Laravel 首先会在请求载体中查找参数的值。如果该值不存在,Lavarel 将在路由参数中搜索。

获取 JSON 输入

当向应用传递 JSON 请求时,可以通过 input 方法访问 JSON 数据,只要将请求的  Content-Type 头设置为 application/json。 同样可以使用 「点」语法访问 JSON 数组:

$value = $request->cookie('name');

获取部分输入数据

如果需要获取输入数据的子集,可以使用 onlyexcept 方法。它们接受单个 array 或者动态参数列表:

$value = Cookie::get('name');

{tip}  only 方法返回请求中的全部键值对;但是它不返回请求中不存在的键值对。

判断输入值是否存在

has 方法用于判定请求中是否存在指定的值。如果请求中存在该值, has 方法返回 true

return response('Hello World')->cookie( 
   'name','value',$minutes
  );

如果给出一个数组, has 方法将判断在请求中,指定的值是否全部存在:

return response('Hello World')->cookie( 
   'name', 'value', $minutes, $path, $domain, $secure, $httpOnly
  );

如果想要判断一个值在请求中是否存在,并且不为空,需要使用 filled

Cookie::queue(Cookie::make('name', 'value', $minutes));
Cookie::queue('name', 'value', $minutes);

Vous pouvez passer la valeur par défaut comme deuxième paramètre à la méthode input. Cette valeur sera renvoyée lorsque la requête n'inclut pas ce paramètre :

$cookie = cookie('name', 'value', $minutes);
return response('Hello World')->cookie($cookie);
Lorsque vous travaillez avec un formulaire contenant une entrée de tableau, utilisez l'opérateur "point" pour accéder aux éléments du tableau :
$file = $request->file('photo');
$file = $request->photo;

Appelez input Méthode pour obtenir toutes les valeurs d'entrée (sous forme de tableau associatif) :
if ($request->hasFile('photo')) 
  { 
   //
 }
🎜Obtenir l'entrée de la chaîne de requête🎜🎜input Récupère la valeur de l'ensemble du vecteur de requête (y compris la chaîne de requête), la méthode query récupère uniquement la valeur de la chaîne de requête : 🎜
if ($request->file('photo')->isValid()) {
    //
  }
🎜Si la valeur de la chaîne de requête n'existe pas, la Méthode query Le deuxième paramètre sera renvoyé comme valeur par défaut du paramètre : 🎜
$path = $request->photo->path();
$extension = $request->photo->extension();
🎜Appelez la méthode query sans paramètres pour obtenir toutes les valeurs de la chaîne de requête (sous la forme d'un tableau associatif) : 🎜
$path = $request->photo->store('images');
$path = $request->photo->store('images', 's3');
🎜🎜Obtenir une entrée via des propriétés dynamiques🎜🎜La saisie utilisateur est accessible via les propriétés dynamiques du Instance IlluminateHttpRequest. Par exemple, si votre formulaire de candidature contient un champ name, vous pouvez accéder à la valeur de ce champ comme ceci : 🎜
$path = $request->photo->storeAs('images', 'filename.jpg');
$path = $request->photo->storeAs('images', 'filename.jpg', 's3');
🎜Lorsque vous utilisez des propriétés dynamiques, Laravel recherche d'abord la valeur du paramètre dans la requête. corps. Si la valeur n'existe pas, Lavarel effectuera une recherche dans les paramètres de l'itinéraire. 🎜
🎜🎜Obtenir une entrée JSON🎜🎜Lorsque vous transmettez une requête JSON à l'application, vous pouvez accéder aux données JSON via la méthode input, tant que l'en-tête Content-Type demandé est défini sur application/json. Vous pouvez également utiliser la syntaxe « point » pour accéder aux tableaux JSON : 🎜
<?php
   namespace App\Http\Middleware;
   use Illuminate\Http\Request;
   use Fideloper\Proxy\TrustProxies as Middleware;
   class TrustProxies extends Middleware{    
        /**
     * 应用程序的可信代理列表
     *
     * @var array
     */   
    protected $proxies = [    
        '192.168.1.1',        
        '192.168.1.2',    
      ];    
     /**
     * 应该用来检测代理的头信息
     *
     * @var string
     */    
     protected $headers = Request::HEADER_X_FORWARDED_ALL;}
🎜🎜Obtenir une partie des données d'entrée🎜🎜Si vous avez besoin d'obtenir un sous-ensemble de l'entrée données, vous pouvez utiliser la méthode uniquement ou sauf. Ils acceptent un seul tableau ou une liste de paramètres dynamiques : 🎜
/**
 * 应用程序的可信代理列表
 *
 * @var array
 */
 protected $proxies = '*';
🎜{tip} La méthode only renvoie toutes les paires clé-valeur dans la requête ; ne renvoie aucune paire clé-valeur dans la requête. 🎜
🎜🎜Déterminer si la valeur d'entrée existe🎜🎜La méthode has est utilisée pour déterminer si la valeur spécifiée existe dans le demande. Si la valeur existe dans la requête, la méthode has renvoie true : 🎜rrreee🎜Si un tableau est donné, la méthode has déterminera que dans la requête, Si toutes les valeurs spécifiées existent : 🎜rrreee🎜 Si vous souhaitez déterminer si une valeur existe dans la requête et n'est pas vide, vous devez utiliser la méthode filled : 🎜rrreee 🎜🎜🎜🎜🎜🎜

Old Data

Laravel vous permet de conserver les données entre les requêtes. Cette fonctionnalité est utile lors du remplissage d'un formulaire après une erreur de validation. Cependant, si vous utilisez les fonctionnalités de validation intégrées de Lavarel, vous n'avez pas besoin d'appeler manuellement ces méthodes car certaines fonctionnalités de validation intégrées de Laravel les appelleront automatiquement.

Transmettre les données d'entrée à la session

La méthode flash de la classe IlluminateHttpRequest transférera l'entrée actuelle à la session, et elles seront envoyées lorsque l'utilisateur fera cette requête à l'application Toujours disponible : IlluminateHttpRequest 类的 flash 方法将把当前的输入传送到 session ,在用户向应用发出这一次请求时它们仍然可用:

rrreee

可以使用 flashOnlyflashExcept 方法将请求数据的子集传送给 session。这些方法常用于将密码之类的敏感数据排除在 session 保持之外:

rrreee

传送数据并跳转

当你经常需要将输入传送至 session 并紧接着跳转至之前的页面,可以通过在跳转函数后链接调用  withInput 方法轻易地实现:

rrreee

获取旧数据

要获取前一次请求传送的数据,可以使用 Request 实例的 old 方法。 old 方法将从 session 拉取之前传送的值:

rrreee

Laravel 还提供了全局的 old 助手。如果要在 Blade 模板中 显示旧数据, old 助手更易用。如果给定域的旧值不存在,它将返回 null

rrreee

Cookies

从请求中获取 Cookies

Lavarel 框架生成的全部 cookies 都是加密的,并且已经用授权码签名,这意味着如果它们被客户端改变就会失效。使用 IlluminateHttpRequest 实例的 cookie 方法可以从请求中获取 cookie 值:

rrreee

也可以使用  Cookie facade 访问 cookie 值:

rrreee

将 Cookies 附加到响应中

可以使用 cookie 方法向输出的 IlluminateHttpResponse 实例附加 cookie。需要传递 名称、值、cookie 的过期时间(以分钟为单位)给该方法:

rrreee

cookie 还可以接受另外几个不太常用的参数。通常这些参数和 PHP 内置的 setcookie 方法的参数有着相同的作用和意义:

rrreee

同样,你可以使用 Cookie facade 来 「排列」 用于从应用中附加到输出响应的 cookies。queue 方法接受一个 Cookie 实例或者用于创建 Cookierrreee

Vous pouvez utiliser la méthode flashOnly ou flashExcept pour transmettre un sous-ensemble des données demandées à la session. Ces méthodes sont souvent utilisées pour exclure les données sensibles telles que les mots de passe de la persistance de session :
rrreee
🎜Transférer des données et sauter🎜🎜Lorsque vous devez souvent saisir Transfert vers le session, puis passer à la page précédente peut être facilement réalisé en appelant la méthode withInput après la fonction de saut : 🎜rrreee
🎜🎜Get old data🎜🎜Pour récupérer les données transmises par la requête précédente, vous pouvez utiliser la méthode old de l'instance Request. La méthode old extraira la valeur précédemment transmise de la session : 🎜rrreee🎜Laravel fournit également un assistant global old. Si vous souhaitez afficher les anciennes données dans un modèle Blade, l'assistant old est plus facile à utiliser. Si l'ancienne valeur du domaine donné n'existe pas, elle renverra null : 🎜rrreee🎜🎜
🎜🎜Cookies🎜
🎜🎜Obtenir les cookies de la demande🎜🎜Tous les cookies générés par le framework Lavarel sont cryptés et signés avec un code d'autorisation. Cela signifie qu'ils deviendront invalides s'ils sont modifiés par le client. Utilisez la méthode cookie de l'instance IlluminateHttpRequest pour obtenir la valeur du cookie de la requête : 🎜rrreee🎜 Vous pouvez également utiliser la façade Cookie pour accéder la valeur du cookie : 🎜rrreee< div name="c52fe2" data-unique="c52fe2">🎜🎜Attacher des cookies à la réponse🎜🎜Vous pouvez utiliser la méthode cookie pour attacher des cookies à la sortie < code>IlluminateHttpResponse. Vous devez transmettre le nom, la valeur et le délai d'expiration du cookie (en minutes) à cette méthode : 🎜rrreee🎜cookie peut également accepter plusieurs autres paramètres moins couramment utilisés. Habituellement, ces paramètres ont le même rôle et la même signification que les paramètres de la méthode setcookie intégrée de PHP : 🎜rrreee🎜 De même, vous pouvez utiliser la façade Cookie pour "organiser" les cookies à attacher à la réponse de sortie de la demande. La méthode queue accepte une instance de Cookie ou une liste de paramètres requis pour créer un Cookie. Ces cookies seront ajoutés à la réponse de sortie avant d'être envoyés au navigateur : 🎜rrreee🎜🎜

Génération d'instances de cookies

Si vous souhaitez générer une instance SymfonyComponentHttpFoundationCookie qui peut ensuite être fournie à une instance de réponse, vous pouvez utiliser l'assistant global cookie. Ce cookie ne sera pas renvoyé au client sans être attaché à l'instance de réponse : SymfonyComponentHttpFoundationCookie 实例,可以使用全局的 cookie 助手。这个 cookie 在没有附加到响应实例前不会传回客户端:

rrreee

文件

获取上传的文件

可以使用 IlluminateHttpRequest 实例的 file 方法或者动态属性访问上传文件。 file 方法返回 IlluminateHttpUploadedFile 类的实例,这个类扩展自 PHP 的 SplFileInfo 类并提供用于文件交互的多个方法:

rrreee

可以使用 hasFile 方法判断请求中是否存在指定文件:

rrreee

验证成功上传

除了验证文件是否存在,还可以使用 isValid 方法校验上传的文件有没有问题:

rrreee

文件路径 & 扩展名

UploadedFile 类还包含访问文件的全路径和扩展名的方法。 extension 方法基于文件的内容猜测匹配的文件扩展名。这个扩展名有可能和客户端提供的扩展名不同:

rrreee

其它的文件方法

UploadedFile 实例还有另外几个方法可用。浏览  这个类的 API 文档 可以获取这些方法的更多信息。

存储上传文件

要存储上传的文件,先配置好 文件系统。你可以使用 UploadedFilestore 方法把上传文件移动到你的某个磁盘上,该文件可能是本地文件系统中的一个位置,甚至像 Amazon S3 这样的云存储位置。

store 方法接受相对于文件系统配置的存储文件根目录的路径。这个路径不能包含文件名,因为系统会自动生成唯一的 ID 作为文件名。

store 方法还接受可选的第二个参数,用于存储文件的磁盘名称。这个方法会返回相对于磁盘根目录的文件路径:

rrreee

如果你不想自动生成文件名,那么可以使用 storeAsrrreee

fichiers< /h2>

🎜

Obtenir les fichiers téléchargés

🎜Vous pouvez utiliser La méthode file ou la propriété dynamique de l'instance IlluminateHttpRequest accède au fichier téléchargé. La méthode file renvoie une instance de la classe IlluminateHttpUploadedFile, qui étend la classe SplFileInfo de PHP et fournit plusieurs méthodes pour l'interaction avec les fichiers : 🎜rrreee 🎜Vous pouvez utilisez la méthode hasFile pour déterminer si le fichier spécifié existe dans la requête : 🎜rrreee
🎜🎜Vérifiez le téléchargement réussi🎜🎜En plus de vérifier si le fichier existe, vous pouvez également utiliser la méthode isValid pour vérifier s'il y a des problèmes avec le fichier téléchargé : 🎜rrreee
🎜🎜 Chemin et extension du fichier🎜🎜 La classe UploadedFile contient également des méthodes pour accéder au chemin complet et à l'extension d'un fichier. La méthode extension devine l'extension de fichier correspondante en fonction du contenu du fichier. Cette extension peut être différente de l'extension fournie par le client : 🎜rrreee
🎜🎜Autres méthodes de fichiers🎜🎜UploadedFile Les exemples sont également Plusieurs autres des méthodes sont disponibles. Parcourez la documentation de l'API de cette classe pour plus d'informations sur ces méthodes. 🎜🎜🎜🎜
🎜

Stockage des fichiers téléchargés

🎜Pour stocker les fichiers téléchargés, configurez d'abord le système de fichiers. Vous pouvez utiliser la méthode store de UploadedFile pour déplacer le fichier téléchargé vers l'un de vos disques, qui peut être un emplacement sur votre système de fichiers local, ou même quelque chose comme Amazon S3. emplacement de stockage en nuage. La méthode 🎜🎜store accepte un chemin relatif au répertoire racine du fichier stocké configuré dans le système de fichiers. Ce chemin ne peut pas contenir de nom de fichier car le système génère automatiquement un identifiant unique comme nom de fichier. 🎜🎜La méthode store accepte également un deuxième paramètre facultatif, le nom du disque sur lequel le fichier est stocké. Cette méthode renverra le chemin du fichier relatif à la racine du disque : 🎜rrreee🎜 Si vous ne souhaitez pas générer automatiquement le nom du fichier, vous pouvez utiliser la méthode storeAs, qui accepte le chemin, nom du fichier et nom du disque comme paramètres : 🎜 rrreee🎜🎜🎜🎜🎜🎜

Configurer un proxy de confiance

Si votre application s'exécute derrière un équilibreur de charge avec un certificat TLS/SSL expiré, vous remarquerez peut-être que votre application ne parvient parfois pas à générer des liens HTTPS. Cela est généralement dû au fait que votre application transfère le trafic de l'équilibreur de charge sur le port 80 sans savoir si elle doit générer un lien sécurisé.

Pour résoudre ce problème, vous devez inclure le middleware AppHttpMiddlewareTrustProxies dans votre application Laravel, ce qui vous permet de personnaliser rapidement l'équilibreur de charge ou le proxy auquel votre application fait confiance. Vos proxys de confiance doivent être répertoriés sous forme de tableau dans l'attribut $proxies de ce middleware. En plus de configurer des proxys de confiance, vous pouvez également configurer des proxys qui doivent être fiables $header:AppHttpMiddlewareTrustProxies 中间件,这使得你可以快速自定义应用程序信任的负载均衡器或代理。你的可信代理应该作为这个中间件的 $proxies 属性的数组列出。除了配置受信任的代理之外,还可以配置应该信任的代理 $header:

rrreee

{tip} 如果你使用 AWS 弹性负载平衡,你的 $header 值应该是 Request::HEADER_X_FORWARDED_AWS_ELB。常量的更多信息,可用于 $headers 属性,看看 Symfony 的 文档 信任代理.

信任所有代理

如果你使用 Amazon AWS 或其他的「云」负载均衡器提供程序,你可能不知道负载均衡器的实际 IP 地址。在这种情况下,你可以使用 *rrreee

{tip} Si vous utilisez AWS Elastic Load Balancing, votre $header < /code> La valeur doit être Request::HEADER_X_FORWARDED_AWS_ELB. Pour plus d'informations sur les constantes disponibles pour l'attribut $headers, jetez un œil au Document Trust Agent de Symfony
.

Faire confiance à tous les proxys

Si vous utilisez Amazon AWS ou un autre fournisseur d'équilibreur de charge « cloud », vous ne connaissez peut-être pas l'adresse IP réelle de l'équilibreur de charge. Dans ce cas, vous pouvez utiliser * pour faire confiance à tous les proxys :
rrreee
Cet article est apparu pour la première fois sur le site Web 🎜LearnKu.com🎜. 🎜🎜