In projects with separate front-end and back-end, cross-domain problems may be encountered when the front-end requests the back-end interface. Among them, a typical scenario is: the front-end project runs at http://localhost:8080, and the back-end project runs at http://localhost:8000. In this case, cross-domain settings need to be set.
In Laravel, you can use the following two methods to set up cross-domain.
- Middleware method
First create a middleware CorsMiddleware:
php?artisan?make:middleware?CorsMiddleware
Handle cross-domain in CorsMiddleware:
<?php namespace App\Http\Middleware; use Closure; class CorsMiddleware { public function handle($request, Closure $next) { $origin = $request->header('Origin')??:?'*'; ????????header('Access-Control-Allow-Origin:?'?.?$origin); ????????header('Access-Control-Allow-Headers:?Origin,?Content-Type,?Authorization'); ????????header('Access-Control-Allow-Methods:?GET,?POST,?PUT,?DELETE,?OPTIONS'); ????????return?$next($request); ????} }
The The middleware will be registered in the $middleware array in Http/Kernel.php:
protected?$middleware?=?[ ????//?... ????\App\Http\Middleware\CorsMiddleware::class, ];
At this time, Laravel will add cross-domain related information such as Access-Control-Allow-Origin in the response header.
- Laravel-cors extension package
In fact, the Laravel community already has many open source extension packages that can be used to handle cross-domain issues. For example, laravel-cors provides some configuration items to set up cross-domain requests.
First, install the extension package:
composer?require?barryvdh/laravel-cors
Then, register the service provider in the providers array in config/app.php:
'providers'?=>?[ ????//?... ????Barryvdh\Cors\ServiceProvider::class, ],
Finally, publish the configuration file:
php?artisan?vendor:publish?--provider="Barryvdh\Cors\ServiceProvider"
At this time, you can configure cross-domain requests in config/cors.php:
return?[ ????/* ????|-------------------------------------------------------------------------- ????|?Laravel?CORS?Options ????|-------------------------------------------------------------------------- ????| ????|?The?allowed_methods?and?allowed_headers?options?are?case-insensitive. ????| ????*/ ????'allowed_origins'?=>?['*'], ????'allowed_origins_patterns'?=>?[], ????'allowed_headers'?=>?['*'], ????'allowed_methods'?=>?['*'], ????'exposed_headers'?=>?[], ????'max_age'?=>?0, ????'supports_credentials'?=>?false, ];
Configure accordingly as required.
The above are two methods for setting up cross-domain settings in Laravel. Just choose the one that suits you.
The above is the detailed content of How to set up cross-domain laravel (two methods). For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

InLaravel,policiesorganizeauthorizationlogicformodelactions.1.Policiesareclasseswithmethodslikeview,create,update,anddeletethatreturntrueorfalsebasedonuserpermissions.2.Toregisterapolicy,mapthemodeltoitspolicyinthe$policiesarrayofAuthServiceProvider.

Yes,youcaninstallLaravelonanyoperatingsystembyfollowingthesesteps:1.InstallPHPandrequiredextensionslikembstring,openssl,andxmlusingtoolslikeXAMPPonWindows,HomebrewonmacOS,oraptonLinux;2.InstallComposer,usinganinstalleronWindowsorterminalcommandsonmac

The main role of the controller in Laravel is to process HTTP requests and return responses to keep the code neat and maintainable. By concentrating the relevant request logic into a class, the controller makes the routing file simpler, such as putting user profile display, editing and deletion operations in different methods of UserController. The creation of a controller can be implemented through the Artisan command phpartisanmake:controllerUserController, while the resource controller is generated using the --resource option, covering methods for standard CRUD operations. Then you need to bind the controller in the route, such as Route::get('/user/{id

Laravel allows custom authentication views and logic by overriding the default stub and controller. 1. To customize the authentication view, use the command phpartisanvendor:publish-tag=laravel-auth to copy the default Blade template to the resources/views/auth directory and modify it, such as adding the "Terms of Service" check box. 2. To modify the authentication logic, you need to adjust the methods in RegisterController, LoginController and ResetPasswordController, such as updating the validator() method to verify the added field, or rewriting r

Laravelprovidesrobusttoolsforvalidatingformdata.1.Basicvalidationcanbedoneusingthevalidate()methodincontrollers,ensuringfieldsmeetcriterialikerequired,maxlength,oruniquevalues.2.Forcomplexscenarios,formrequestsencapsulatevalidationlogicintodedicatedc

Selectingonlyneededcolumnsimprovesperformancebyreducingresourceusage.1.Fetchingallcolumnsincreasesmemory,network,andprocessingoverhead.2.Unnecessarydataretrievalpreventseffectiveindexuse,raisesdiskI/O,andslowsqueryexecution.3.Tooptimize,identifyrequi

InLaravelBladetemplates,use{{{...}}}todisplayrawHTML.Bladeescapescontentwithin{{...}}usinghtmlspecialchars()topreventXSSattacks.However,triplebracesbypassescaping,renderingHTMLas-is.Thisshouldbeusedsparinglyandonlywithfullytrusteddata.Acceptablecases

TomockdependencieseffectivelyinLaravel,usedependencyinjectionforservices,shouldReceive()forfacades,andMockeryforcomplexcases.1.Forinjectedservices,use$this->instance()toreplacetherealclasswithamock.2.ForfacadeslikeMailorCache,useshouldReceive()tod
