thinkphp6.0路由篇之路由的域名和跨域请求

一、域名路由

1、要使用域名路由,首先需通过hosts文件来映射
2、文件目录再C:\Windows\System32\drivers\etc
3、 在末尾添加一句:127.0.0.1 news.abc.com 映射二级域名;
4、此时,我们访问 news.abc.com 就直接映射到 localhost 里了
如果想访问 thinkphp 独立的服务器,开启后,直接:8080 即可

http://news.abc.com:8000

5、如果想限定在 news.abc.com 这个域名下才有效,通过域名路由闭包的形式;

Route::domain('news', function () { 
Route::rule('details/:id', 'Address/details'); 
});

6、除了二级(子)域名的开头部分,也可以设置完整域名

Route::domain('news.abc.com', function () { 
Route::rule('details/:id', 'Address/details'); 
});

7、支持多个二级(子)域名开头部分,使用相同的路有规则

Route::domain(['news', 'blog', 'live'], function () { 
Route::rule('details/:id', 'Address/details'); 
});

8、可以作为方法,进行二级(子)域名开头部分的检测,或完整域名检测

Route::rule('details/:id', 'Address/details')->domain('news'); 
Route::rule('details/:id', 'Address/details')
->domain('news.abc.com')

9、路由域名也支持:ext、pattern、append 等路由参数方法的操作

##二、跨域请求
1、当不同域名进行跨域请求的时候,由于浏览器的安全限制,会被拦截
2、为了解除这个限制,我们通过路由 allowCrossDomain()来实现;

Route::rule('details/:id', 'Address/details')->allowCrossDomain();

3、实现跨域比如没有实现的 header 头文件多了几条开头为 Access 的信息;
4、这个页面,就可以支持跨域请求的操纵了;
5、 我们创建一个不同端口号或不同域名的 ajax 按钮,点击获取这个路由页面信息;
6、 如果,没有开启跨域请求,则会爆出提醒:

//已拦截跨源请求:同源策略禁止读取位于 http://localhost:8000/details/5.html 的远程资源。(原因:CORS 头
缺少 'Access-Control-Allow-Origin'

7、开启后,即正常获取得到的数据
8、 如果你想限制跨域请求的域名,则可以增加一条参数;

Route::rule('col/:id', 'Collect/read') 
	->allowCrossDomain([ 
	'Access-Control-Allow-Origin' => 'http://news.abc.com:8000' 
	] 
);

你可能感兴趣的:(#,thinkphp6.0学习)