bertanya


Terima data

    Data lama
  • Terima fail yang dimuat naik
  • Simpan fail yang dimuat naik
  • konfigurasi proksi
  • Terima permintaan Untuk mendapatkan contoh permintaan HTTP semasa melalui suntikan kebergantungan, anda harus memperkenalkan kelas IlluminateHttpRequest pada pengawal, dan tika permintaan masuk akan disuntik secara automatik oleh bekas perkhidmatan:
      <?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');       
               //   
             }
          }
      < div name=" d83a24" data-unique="d83a24">
    • Suntikan Kebergantungan & Parameter Laluan

      Jika pengawal anda perlu mendapatkan data daripada parameter laluan, anda harus memasukkannya selepas parameter kebergantungan yang lain. Sebagai contoh, laluan anda ditakrifkan seperti ini:
      Route::put('user/{id}', 'UserController@update');
    • Anda boleh menentukan pengawal melalui kaedah berikut, gunakan kelas IlluminateHttpRequest untuk mendapatkan parameter laluan anda 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)   
             {      
               //   
              }
          }

      Dapatkan parameter melalui penghalaan penutupan

      Anda juga boleh menggunakan IlluminateHttpRequest dalam kelas penutupan penghalaan, bekas perkhidmatan akan secara automatik menyuntik parameter permintaan ke dalam penutupan penghalaan:
    • use Illuminate\Http\Request;
      Route::get('/', function (Request $request) { 
         //
       });
  • Minta laluan & kaedah

    IlluminateHttpRequest menyediakan satu siri kaedah untuk mengesahkan parameter permintaan HTTP dan mewarisi kelas SymfonyComponentHttpFoundationRequest. Berikut adalah beberapa kaedah penting kelas ini:

Dapatkan laluan permintaan

Kaedahlaluan mengembalikan maklumat laluan yang diminta. Jadi, jika laluan yang diminta ialah http://domain.com/foo/bar, kaedah path akan mengembalikan foo/bar:path  方法返回请求的路径信息。所以,如果请求的路径是 http://domain.com/foo/barpath 方法将会返回 foo/bar:

$uri = $request->path();

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

if ($request->is('admin/*')) {  
  //
 }

获取请求 URL

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

// 不附带查询串...
$url = $request->url();
// 附带查询串...
$url = $request->fullUrl();

获取请求 Method

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

$method = $request->method();if ($request->isMethod('post')) { 
   //
}

PSR-7 请求

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

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

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

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

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

输入的裁剪和标准化

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

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

获取输入

获取所有的输入数据

可以使用 all

$input = $request->all();

is boleh mengesahkan sama ada laluan permintaan masuk sepadan dengan corak yang diberikan. Dalam kaedah ini, anda juga boleh menggunakan aksara * sebagai kad bebas:
$name = $request->input('name');
🎜Dapatkan URL permintaan🎜🎜Anda boleh menggunakan kaedah url atau fullUrl untuk mendapatkan URL permintaan lengkap. Kaedah url mengembalikan URL yang tidak mengandungi rentetan pertanyaan dan fullUrl memperoleh URL yang mengandungi rentetan pertanyaan: 🎜
$name = $request->input('name', 'Sally');
🎜 🎜Get request Method🎜🎜kaedah kaedah mengembalikan tindakan HTTP yang diminta. Anda juga boleh menggunakan kaedah isMethod untuk mengesahkan bahawa tindakan HTTP sepadan dengan tetamu yang diberikan: 🎜
$name = $request->input('products.0.name');
$names = $request->input('products.*.name');
🎜🎜
🎜

Permintaan PSR-7

🎜Piawaian PSR-7 mentakrifkan antara muka mesej HTTP, termasuk permintaan dan respons. Jika anda ingin menggunakan permintaan PSR-7 dan bukannya permintaan Laravel, anda perlu memasang beberapa perpustakaan terlebih dahulu. Laravel menggunakan komponen Symfony HTTP Message Bridge untuk menukar permintaan dan respons Laravel biasa kepada pelaksanaan yang mematuhi PSR-7: 🎜
$input = $request->input();
🎜Setelah pustaka ini dipasang, ia boleh dihantar dalam penutupan laluan atau kaedah pengawal Permintaan petua jenis antara muka untuk mendapatkan permintaan PSR-7: 🎜
$name = $request->query('name');
🎜{tip} Jika tika tindak balas PSR-7 dikembalikan daripada laluan atau pengawal, rangka kerja akan menukarnya semula kepada tika tindak balas Laravel secara automatik dan memaparkannya . 🎜
🎜🎜
🎜

Input pemangkasan dan normalisasi< / h2>🎜Secara lalai, Laravel menyertakan perisian tengah TrimStrings dan ConvertEmptyStringsToNull dalam tindanan perisian tengah global aplikasi. Perisian tengah ini diletakkan dalam senarai tindanan kelas AppHttpKernel. Mereka secara automatik memangkas semua medan rentetan input dalam permintaan, sambil menukar medan rentetan kosong kepada null. Dengan cara ini anda tidak perlu risau tentang konvensyen piawai dalam penghalaan dan pengawal. 🎜🎜Jika anda ingin melumpuhkan tingkah laku ini, cuma alih keluarnya daripada atribut $middleware kelas AppHttpKernel (bersamaan dengan mengalih keluarnya daripada timbunan middleware aplikasi) . 🎜🎜🎜
🎜

Mendapatkan input

🎜🎜Dapatkan semua data input🎜🎜Anda boleh menggunakan kaedah semua untuk mendapatkan semua tatasusunan data input: 🎜
$name = $request->query('name', 'Helen');
🎜🎜

Dapatkan nilai input tunggal

Menggunakan beberapa kaedah mudah, anda boleh mendapatkan semua input pengguna melalui contoh IlluminateHttpRequest, tanpa perlu risau tentang tindakan HTTP yang diminta pengguna. Tanpa mengira tindakan HTTP, permintaan pengguna boleh diperoleh melalui kaedah input: IlluminateHttpRequest 实例获取用户的全部输入,不需要担心用户请求用的是哪种 HTTP 动作。无论哪种 HTTP 动作, 用户的请求都能被 input 方法获取:

$query = $request->query();

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

$name = $request->name;

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

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

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

$input = $request->only(['username', 'password']);
$input = $request->only('username', 'password');
$input = $request->except(['credit_card']);
$input = $request->except('credit_card');

从查询串中获取输入

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

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

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

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

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

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

通过动态属性获取输入

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

$request->flash();

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

获取 JSON 输入

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

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

获取部分输入数据

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

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

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

判断输入值是否存在

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

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

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

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

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

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

Anda boleh menghantar nilai lalai sebagai parameter kedua kepada kaedah input. Nilai ini akan dikembalikan apabila permintaan tidak termasuk parameter ini:

$value = Cookie::get('name');
Apabila bekerja dengan borang yang mengandungi input tatasusunan, gunakan operator "titik" untuk mengakses elemen tatasusunan:
return response('Hello World')->cookie( 
   'name','value',$minutes
  );

Panggil input Kaedah untuk mendapatkan semua nilai input (dalam bentuk tatasusunan bersekutu):
return response('Hello World')->cookie( 
   'name', 'value', $minutes, $path, $domain, $secure, $httpOnly
  );
🎜Dapatkan input daripada rentetan pertanyaan🎜🎜input kaedah Dapatkan nilai daripada keseluruhan vektor permintaan (termasuk rentetan pertanyaan), kaedah pertanyaan hanya mendapat nilai daripada rentetan pertanyaan: 🎜
Cookie::queue(Cookie::make('name', 'value', $minutes));
Cookie::queue('name', 'value', $minutes);
🎜Jika nilai rentetan pertanyaan tidak wujud, Kaedah query Parameter kedua akan dikembalikan sebagai nilai lalai parameter: 🎜
$cookie = cookie('name', 'value', $minutes);
return response('Hello World')->cookie($cookie);
🎜Panggil kaedah query tanpa parameter untuk mendapatkan semua nilai rentetan pertanyaan (dalam bentuk tatasusunan bersekutu): 🎜
$file = $request->file('photo');
$file = $request->photo;
🎜🎜Mendapatkan input melalui sifat dinamik🎜🎜Input pengguna boleh diakses melalui sifat dinamik Contoh IlluminateHttpRequest. Contohnya, jika borang permohonan anda mengandungi medan nama, anda boleh mengakses nilai medan tersebut seperti ini: 🎜
if ($request->hasFile('photo')) 
  { 
   //
 }
🎜Apabila menggunakan sifat dinamik, Laravel mula-mula mencari nilai parameter dalam permintaan badan. Jika nilai tidak wujud, Lavarel akan mencari dalam parameter laluan. 🎜
🎜🎜Dapatkan input JSON🎜🎜Apabila menghantar permintaan JSON kepada aplikasi, anda boleh mengakses data JSON melalui kaedah input, selagi yang diminta Pengepala Content-Type ditetapkan kepada application/json. Anda juga boleh menggunakan sintaks "titik" untuk mengakses tatasusunan JSON: 🎜
if ($request->file('photo')->isValid()) {
    //
  }
🎜🎜Dapatkan sebahagian daripada data input🎜🎜Jika anda perlu mendapatkan subset input data, anda boleh menggunakan kaedah sahaja atau kecuali. Mereka menerima satu array atau senarai parameter dinamik: 🎜
$path = $request->photo->path();
$extension = $request->photo->extension();
🎜{tip} Kaedah only mengembalikan semua pasangan nilai kunci dalam permintaan itu; tidak mengembalikan sebarang pasangan nilai kunci dalam permintaan pasangan nilai kunci sedia ada. 🎜
🎜🎜Tentukan sama ada nilai input wujud🎜🎜 kaedahhas digunakan untuk menentukan sama ada nilai yang ditentukan wujud dalam permintaan. Jika nilai wujud dalam permintaan, kaedah has mengembalikan true: 🎜
$path = $request->photo->store('images');
$path = $request->photo->store('images', 's3');
🎜Jika tatasusunan diberikan, kaedah has akan menentukan bahawa dalam permintaan, Sama ada semua nilai yang dinyatakan wujud: 🎜
$path = $request->photo->storeAs('images', 'filename.jpg');
$path = $request->photo->storeAs('images', 'filename.jpg', 's3');
🎜 Jika anda ingin menentukan sama ada nilai wujud dalam permintaan dan tidak kosong, anda perlu menggunakan kaedah filled: 🎜
<?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;}
🎜🎜🎜🎜🎜🎜

Data Lama

Laravel membolehkan anda mengekalkan data antara permintaan. Ciri ini berguna apabila mengisi semula borang selepas ralat pengesahan. Walau bagaimanapun, jika anda menggunakan ciri pengesahan terbina dalam Lavarel, anda tidak perlu memanggil kaedah ini secara manual kerana beberapa ciri pengesahan terbina dalam Laravel akan memanggilnya secara automatik.

Hantar data input ke Sesi

Kaedah flash kelas IlluminateHttpRequest akan memindahkan input semasa ke sesi, dan ia akan dihantar apabila pengguna membuat permintaan ini kepada aplikasi Masih tersedia: IlluminateHttpRequest 类的 flash 方法将把当前的输入传送到 session ,在用户向应用发出这一次请求时它们仍然可用:

/**
 * 应用程序的可信代理列表
 *
 * @var array
 */
 protected $proxies = '*';

可以使用 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

Anda boleh menggunakan kaedah flashOnly atau flashExcept untuk menghantar subset data yang diminta kepada sesi. Kaedah ini sering digunakan untuk mengecualikan data sensitif seperti kata laluan daripada kegigihan sesi:
rrreee
🎜Pindahkan data dan lompat🎜🎜Apabila anda sering perlu memasukkan Memindahkan ke sesi dan kemudian melompat ke halaman sebelumnya boleh dicapai dengan mudah dengan memanggil kaedah withInput selepas fungsi lompat: 🎜rrreee
🎜🎜Menjadi tua data🎜🎜Untuk mendapatkan data yang dihantar melalui permintaan sebelumnya, anda boleh menggunakan kaedah lama contoh Permintaan. Kaedah lama akan menarik nilai yang dihantar sebelum ini daripada sesi: 🎜rrreee🎜Laravel juga menyediakan pembantu lama global. Jika anda ingin memaparkan data lama dalam templat Blade, pembantu lama lebih mudah digunakan. Jika nilai lama untuk domain yang diberikan tidak wujud, ia akan mengembalikan null: 🎜rrreee🎜🎜
🎜🎜Kuki🎜
🎜🎜Dapatkan Kuki daripada permintaan🎜🎜Semua kuki yang dijana oleh rangka kerja Lavarel disulitkan dan ditandatangani dengan kod kebenaran ini Bermakna ia akan menjadi tidak sah jika diubah oleh pelanggan. Gunakan kaedah cookie contoh IlluminateHttpRequest untuk mendapatkan nilai kuki daripada permintaan: 🎜rrreee🎜 Anda juga boleh menggunakan fasad Cookie untuk mengakses nilai kuki: 🎜rrreee< div name="c52fe2" data-unique="c52fe2">🎜🎜Lampirkan Kuki pada respons🎜🎜Anda boleh menggunakan kaedah kuki untuk melampirkan kuki pada output < kod>IlluminateHttpResponse contoh. Anda perlu menghantar nama, nilai dan masa tamat tempoh kuki (dalam minit) kepada kaedah ini: 🎜rrreee🎜kuki juga boleh menerima beberapa parameter lain yang kurang biasa digunakan. Biasanya parameter ini mempunyai kesan dan makna yang sama seperti parameter kaedah setcookie terbina dalam PHP: 🎜rrreee🎜 Begitu juga, anda boleh menggunakan fasad Cookie untuk "mengatur" kuki untuk dilampirkan pada respons output daripada permohonan itu. Kaedah queue menerima contoh Cookie atau senarai parameter yang diperlukan untuk membuat Cookie. Kuki ini akan dilampirkan pada respons output sebelum dihantar ke penyemak imbas: 🎜rrreee🎜🎜

Menjana Kejadian Kuki

Jika anda ingin menjana tika SymfonyComponentHttpFoundationCookie yang kemudiannya boleh diberikan kepada tika respons, anda boleh menggunakan pembantu kuki global. Kuki ini tidak akan dihantar kembali kepada pelanggan tanpa dilampirkan pada contoh respons: 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

fail< /h2>

🎜

Dapatkan fail yang dimuat naik

🎜Anda boleh menggunakan Kaedah fail contoh IlluminateHttpRequest atau sifat dinamik mengakses fail yang dimuat naik. Kaedah fail mengembalikan contoh kelas IlluminateHttpUploadedFile, yang memanjangkan kelas SplFileInfo PHP dan menyediakan berbilang kaedah untuk interaksi fail: 🎜rrreee 🎜Anda boleh gunakan kaedah hasFile untuk menentukan sama ada fail yang ditentukan wujud dalam permintaan: 🎜rrreee
🎜🎜Sahkan muat naik berjaya🎜🎜Selain pengesahan sama ada fail itu wujud, Anda juga boleh menggunakan kaedah isValid untuk menyemak sama ada terdapat sebarang masalah dengan fail yang dimuat naik: 🎜rrreee
🎜🎜 Laluan fail & sambungan🎜🎜 Kelas Muat NaikFail juga mengandungi kaedah untuk mengakses laluan penuh dan sambungan fail. Kaedah sambungan meneka sambungan fail yang sepadan berdasarkan kandungan fail. Sambungan ini mungkin berbeza daripada sambungan yang disediakan oleh pelanggan: 🎜rrreee
🎜🎜Kaedah fail lain🎜🎜Fail yang Dimuat Naik Contoh juga adalah Beberapa contoh lain kaedah tersedia. Semak imbas dokumentasi API untuk kelas ini untuk mendapatkan maklumat lanjut tentang kaedah ini. 🎜🎜🎜🎜
🎜

Menyimpan fail yang dimuat naik

🎜Untuk menyimpan fail yang dimuat naik, Konfigurasikan dahulu sistem fail. Anda boleh menggunakan kaedah store UploadedFile untuk mengalihkan fail yang dimuat naik ke salah satu cakera anda, yang boleh menjadi lokasi pada sistem fail setempat anda atau sesuatu seperti Amazon S3 lokasi penyimpanan awan. Kaedah 🎜🎜stor menerima laluan relatif kepada direktori akar fail yang disimpan yang dikonfigurasikan dalam sistem fail. Laluan ini tidak boleh mengandungi nama fail kerana sistem secara automatik menjana ID unik sebagai nama fail. 🎜🎜Kaedah store juga menerima parameter kedua pilihan, nama cakera tempat fail disimpan. Kaedah ini akan mengembalikan laluan fail secara relatif kepada akar cakera: 🎜rrreee🎜 Jika anda tidak mahu menjana nama fail secara automatik, anda boleh menggunakan kaedah storeAs, yang menerima laluan, nama fail, dan nama cakera sebagai parameternya: 🎜 rrreee🎜🎜🎜🎜🎜🎜

Konfigurasikan Proksi Dipercayai

Jika aplikasi anda berjalan di belakang pengimbang beban dengan sijil TLS/SSL yang telah tamat tempoh, anda mungkin perasan bahawa aplikasi anda kadangkala gagal menjana pautan HTTPS. Biasanya ini adalah kerana aplikasi anda memajukan trafik daripada pengimbang beban pada port 80 tanpa mengetahui sama ada ia patut menjana pautan selamat.

Untuk menyelesaikan masalah ini, anda perlu memasukkan perisian tengah AppHttpMiddlewareTrustProxies dalam aplikasi Laravel anda, yang membolehkan anda menyesuaikan pengimbang beban atau proksi dengan cepat yang dipercayai oleh aplikasi anda. Proksi yang dipercayai anda harus disenaraikan sebagai tatasusunan dalam atribut $proxies bagi perisian tengah ini. Selain mengkonfigurasi proksi yang dipercayai, anda juga boleh mengkonfigurasi proksi yang harus dipercayai $header:AppHttpMiddlewareTrustProxies 中间件,这使得你可以快速自定义应用程序信任的负载均衡器或代理。你的可信代理应该作为这个中间件的 $proxies 属性的数组列出。除了配置受信任的代理之外,还可以配置应该信任的代理 $header:

rrreee

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

信任所有代理

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

{tip} Jika anda menggunakan AWS Elastic Load Balancing, $header < anda /code> Nilainya hendaklah Request::HEADER_X_FORWARDED_AWS_ELB. Untuk mendapatkan maklumat lanjut tentang pemalar yang tersedia untuk atribut $headers, lihat Ejen Amanah Dokumen Symfony
.

Percayai semua proksi

Jika anda menggunakan Amazon AWS atau penyedia pengimbang beban "awan" yang lain, anda mungkin tidak mengetahui alamat IP sebenar pengimbang beban. Dalam kes ini, anda boleh menggunakan * untuk mempercayai semua proksi:
rrreee
Artikel ini mula-mula muncul di tapak web 🎜LearnKu.com🎜. 🎜🎜