在这篇文章中,我们将为您详细介绍多个子域访问单个Laravel实例的内容,并且讨论关于多个子域名进同一个ip的相关问题。此外,我们还会涉及一些关于java–Android:从应用程序中的多个活动访问单
在这篇文章中,我们将为您详细介绍多个子域访问单个 Laravel 实例的内容,并且讨论关于多个子域名进同一个ip的相关问题。此外,我们还会涉及一些关于java – Android:从应用程序中的多个活动访问单个数据库?、Laravel 5.4 api 允许跨域访问、Laravel 5.x设置跨域访问、Laravel 52 $errors 不正常工作 laravel 5 教程 laravel开发教程 laravel怎么的知识,以帮助您更全面地了解这个主题。
本文目录一览:- 多个子域访问单个 Laravel 实例(多个子域名进同一个ip)
- java – Android:从应用程序中的多个活动访问单个数据库?
- Laravel 5.4 api 允许跨域访问
- Laravel 5.x设置跨域访问
- Laravel 52 $errors 不正常工作 laravel 5 教程 laravel开发教程 laravel怎么
多个子域访问单个 Laravel 实例(多个子域名进同一个ip)
如何解决多个子域访问单个 Laravel 实例?
我对 Laravel 完全不明智。但不幸的是,就在一周前,我得到了一个基于 Laravel 的项目。我在我的主机上设置并运行它。它运作良好。但现在我需要设置子域并访问 Laravel 项目的同一个实例。
我挣扎着,并以某种方式成功了。现在我的子域可以访问主域 Laravel 实例。
以下是完整的详细信息:
假设我使用 Laravel 安装项目的主域是例如example.com。然后创建另一个子域 sub.example.com 并将它的 DocumentRoot 目录指向我的主域“example.com”
然后我在我的 Laravel 主安装中创建了一个新的 .env
文件,我的子域名称为 .env.sub.example.com
,并使用以下代码更新了以下文件 bootstrape/app.PHP
以便它可以读取 {{1} } 文件取决于来自哪个域的请求并相应地提供服务。
.env
一切正常,但会话有问题,我安装的一些模块有冲突。如果有人能指出我的错误或告诉我我错过了什么。
如何将我的单个 Laravel 实例与子域一起使用?
我的 /*
|-----------------------------------------------
| Load domain-specific .env file if it exists
|-----------------------------------------------
*/
if(isset($_SERVER[''HTTP_HOST'']) && !empty($_SERVER[''HTTP_HOST''])){
$domain = $_SERVER[''HTTP_HOST''];
if (isset($domain)) {
$dotenv = Dotenv\Dotenv::createImmutable(base_path(),''.env.''.$domain);
try {
$dotenv->load();
} catch (\Dotenv\Exception\InvalidpathException $e) {
// No custom .env file found for this domain
}
}
}
// ...
文件包含这样的路由
routes/web.PHP
解决方法
@Airy,理想情况下,您希望为您的应用程序研究多租户。它更易于维护,而且您无需更新 Laravel 内部结构即可使其正常工作,这是我的建议。
看看一些可能对你有帮助的 Laravel 包:
- https://tenancyforlaravel.com/
- https://spatie.be/docs/laravel-multitenancy/v2/introduction
- https://tenancy.dev/
希望以上内容有所帮助。
java – Android:从应用程序中的多个活动访问单个数据库?
目前,我有每个活动都打开自己的DBManager对象(我创建的帮助类来管理数据库).这是引起问题的,我想要一个稍微更全面的访问解决方案,所以我不必继续打开/关闭/创建一个数据库.
我正在考虑几个选择,并希望听到每个人的利弊以及其他建议.
单身风格有一个包装类,它返回对唯一的数据库管理器的引用,所以任何需要它的活动都可以使用它.
>静态管理器.使经理类完全是静态成员,并在加载时打开数据库.任何需要它(任何人都可以)轻松访问.
> 1和2之间的合并.我可以创建一个数据库管理器类来初始化数据库的成员单例实例,所有的数据操作方法都是静态的.那么我甚至不需要参考单身份访问数据库.我最喜欢这个解决方案,请指出缺点.
建议?
解决方法
我已经成功地使用了一个单身6个月,没有太多的困难. (我很小心,真的让它成为一个单身,但只有一个实例加载数据一次)
独生子
优势:易于实施
优点:因为我使用了一个常见的
我可以实现缓存
很容易,因此使应用程序
不必像数据库那样做
经常
>缺点:不能与外部活动共享您的数据
内容提供商
优势:您可以共享数据
与外部活动
优势:您可以与…集成
搜索API
>缺点:复杂,需要
以不同的方式代表您的数据
办法
>劣势:另一个Android API花时间学习
Laravel 5.4 api 允许跨域访问
Laravel 5.4 api 允许跨域访问
需求: SPA单页应用请求接口, 报错
XMLHttpRequest cannot load http://api.console.vms3.com/api/user. No ''Access-Control-Allow-Origin'' header is present on the requested resource. Origin ''http://localhost:8080'' is therefore not allowed access.
意思就是服务器响应不允许跨域访问.
那我们就需要让服务器支持跨域访问, 也就是在响应头部中添加
''Access-Control-Allow-Origin: *''
文本使用Laravel 5.4版本
第一步: 创建中间件
创建 `app/Http/Middleware/AccessControlAllowOrigin.php` middleware 把 ''Access-Control-Allow-Origin: *'' 写入头部.
app/Http/Middleware/AccessControlAllowOrigin.php
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class AccessControlAllowOrigin
{
/**
*
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
header(''Access-Control-Allow-Origin: *'');
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Methods: *");
header("Access-Control-Allow-Headers: Content-Type,Access-Token");
header("Access-Control-Expose-Headers: *");
return $next($request);
}
}
第二步: 注册路由
注册这个 middleware 到 kernel 中.
分别在 protected $middleware 数组中和 protected $routeMiddleware 数组中
添加我们刚才创建的那个文件class名, 使用 `cors` 这个别名.
第三步: 设置中间件保护接口
然后在设置它保护 api , 就是$middlewareGroups[''api''] 的数组中添加它的别名, 本文中是 ''cors''
app/Http/Kernel.php
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application''s global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\App\Http\Middleware\AccessControlAllowOrigin::class,
];
/**
* The application''s route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
''web'' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
''api'' => [
''throttle:60,1'',
''bindings'',
''cors''
],
];
/**
* The application''s route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
''auth'' => \Illuminate\Auth\Middleware\Authenticate::class,
''auth.basic'' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
''bindings'' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
''can'' => \Illuminate\Auth\Middleware\Authorize::class,
''guest'' => \App\Http\Middleware\RedirectIfAuthenticated::class,
''throttle'' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
''cors'' => \App\Http\Middleware\AccessControlAllowOrigin::class,
];
}
Laravel 5.x设置跨域访问
做api接口的时候碰到个问题,跨域!
解决方法有很多,但是方便的依旧那么一两个,这里我就介绍我最会的就是以下这种
最方便的,新建一个middleWare,把这个middleware加入到全局中间件,所有的请求,都会经过这个中间件的过滤。
php artisan make:middleware CrossHttp
然后就会在appHttpMiddlewareCrossHttp.php这个中间件,在handle方法里面添加如下代码:
public function handle($request, Closure $next) {
$response = $next($request);
$response->header(''Access-Control-Allow-Origin'', ''*'');
$response->header(''Access-Control-Allow-Headers'', ''Origin, Content-Type, Cookie, Accept'');
$response->header(''Access-Control-Allow-Methods'', ''GET, POST, PATCH, PUT, OPTIONS'');
$response->header(''Access-Control-Allow-Credentials'', ''true''); //ession共享的需求才用到
return $response;
}
这个*意思就是允许所有域名来访问这个接口。
到这里还没完,中间件建立了,我们还要加到appHttpKernel.php里面去,不然不能生效。
Laravel 52 $errors 不正常工作 laravel 5 教程 laravel开发教程 laravel怎么
as of 5.2, routes.php is by default already called in the context of a [‘middleware’=>’web’] by routeserviceprovider. but in routes.php default generation of auth routes, the route::group call is still happening by default - so if you delete that route::group declaration from routes.php the application then correctly shows errors.
http://stackoverflow.com/questions/34438463/
以上就介绍了Laravel 52 $errors 不正常工作,包括了laravel,error方面的内容,希望对PHP教程有兴趣的朋友有所帮助。
今天关于多个子域访问单个 Laravel 实例和多个子域名进同一个ip的介绍到此结束,谢谢您的阅读,有关java – Android:从应用程序中的多个活动访问单个数据库?、Laravel 5.4 api 允许跨域访问、Laravel 5.x设置跨域访问、Laravel 52 $errors 不正常工作 laravel 5 教程 laravel开发教程 laravel怎么等更多相关知识的信息可以在本站进行查询。
本文标签: