具有子域的Laravel应用程序,可以通过CNAME链接到其他域

问题描述 投票:0回答:1

我正在尝试创建一个类似于Shopify的应用程序架构。

我从Forge运行此应用程序,我已经设置了通配符DNS的必要配置。

目前,人们可以注册我的Laravel Spark应用程序,然后将在以下位置为他们动态创建子域:

Route::group(['domain' => '{company}.app.com'], function () {
    Route::get('/', 'SubdomainController@index');
});

因此,如果他们注册一个帐户并将公司名称设置为Company,那么他们将在company.app.com创建一个子域名。此子域返回一个包含与其帐户相关的数据的视图(它几乎为我的用户返回一个自定义网站)。

我想让用户能够将他们在company.app.com的网站镜像到他们自己的域名地址。我已经尝试在GoDaddy中在备用域上设置一个掩码我必须测试它,但它似乎不起作用:(我在控制台中收到此错误:

Refused to display 'http://company.app.com/' in a frame because it set 'X-Frame-Options' to 'sameorigin'.

所以我猜这绝对不是正确的做法。

在这发生之后,我看了其他公司如何管理这个,看起来他们创建了一个A记录和CNAME,指向他们的应用程序的根。 Shopify's guide解释说他们将他们的IP添加为A记录,然后将CNAME设置为shops.myshopify.com域。

所以现在我想知道如何在我们的应用程序登陆时向正确的方向指出请求。因此,例如,如果流量达到random.com并且它的A record等于我的服务器IP,加上CNAMEapp.com,那么我该如何处理请求并将其重定向到正确的子域,同时将用户保留在他们的自定义域中?

谢谢,尼克

php laravel subdomain
1个回答
0
投票

它比那容易得多。您的服务器正在将X-Frame-Options标头设置为SAMEORIGIN,这意味着如果您的网站上存在该框架,则您网站上的内容只能在框架内呈现。

你要么完全摆脱它,所以任何人都可以在任何网站上构建你的内容,或者你保存你的客户域并动态地进行某种数据库查找,或者配置某种特定的URL以供它们用于内容链接代理服务器上的目录,并有一部分url,您可以将其捕获为在服务器配置中使用的变量。然后,将标题设置为仅允许来自其域。

因此,embed.myapp.com / example.com可以提供example.myapp.com中的内容并添加标题

X-Frame-Options: ALLOW-FROM https://example.com/

© www.soinside.com 2019 - 2024. All rights reserved.