感谢你来到这里
我真的很激动
盼望,能有你的支持
捐赠可扫描二维码转账支付
支付宝扫一扫付款
微信扫一扫付款
(微信为保护隐私,不显示你的昵称)
有时,你想为一些路由提供安全保障,确保它们总是以HTTPS协议被访问到。路由组件允许你通过设置schemes来强制指定URI的scheme。
1 2 3 4 | secure:
path: /secure
defaults: { _controller: AppBundle:Main:secure }
schemes: [https] |
1 2 3 4 5 6 7 8 9 10 | <?xml version="1.0" encoding="UTF-8" ?>
<routes xmlns="http://symfony.com/schema/routing"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">
<route id="secure" path="/secure" schemes="https">
<default key="_controller">AppBundle:Main:secure</default>
</route>
</routes> |
上面的配置使得secure
路由总是使用HTTPS来访问。
当生成secure
路由的URL时,如果当前的模式是HTTP,Symfony将自动地生成一个HTTPS的绝对URL作为当前的scheme:
1 2 3 4 5 6 7 8 9 10 11 | {# If the current scheme is HTTPS #}
{# 如果当前模式是HTTPS #}
{{ path('secure') }}
{# generates /secure #}
{# 生成 /secure #}
{# If the current scheme is HTTP #}
{# 如果当前模式是 HTTP #}
{{ path('secure') }}
{# generates https://example.com/secure #}
{# 生成 https://example.com/secure #} |
传入的请求也会强制使用这些条件。如果你试图用HTTP访问 /secure
的路径,会被自动重定向到相同的URL上,但这个URL使用的是HTTPS模式。
上面的例子使用https
的scheme,但你也可以强制它总是使用http
的URL。
安全组件提供了另一种方式去执行HTTP和HTTPS,那就是通过设置requires_channel
。这种替代方法更适合于确保你网站的某个“area(区域)”(如,/admin
区域下的所有URL),也适用于当你想为第三方Bundle中的URL提供安全保障时(参考如何在不同的URL中强制使用HTTPS或HTTP以了解更多)。
本文,包括例程代码在内,采用的是 Creative Commons BY-SA 3.0 创作共用授权。