gpt4 book ai didi

php - 强制 https 时 symfony 3 重定向太多

转载 作者:IT王子 更新时间:2023-10-29 00:08:48 27 4
gpt4 key购买 nike

我有一个与 SO 上发布的其他问题类似的问题,但这些解决方案都没有奏效。

我使用的是 OSX El Capitan Server 中内置的 Apache,当我不通过以下指令将 http 流量强制到 https 时,https 可以正常工作:

    access_control:
- { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https, host: mypc\.local$ }

但是在访问我的网站的本地 uri 时添加这个会导致 Too Many Redirects 错误:https://mypc.local/myproject/web/

完整的security.yml:

security:
access_control:
- { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https, host: mypc\.local$ }

providers:
our_db_provider:
entity:
class: AppBundle:Users
property: username

encoders:
AppBundle\Entity\Users: plaintext

firewalls:
# disable authentication for assets and the profiler
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false

main:
pattern: ^/
http_basic: ~
provider: our_db_provider

anonymous: ~
form_login:
login_path: /
check_path: login

logout:
path: /logout
target: /
invalidate_session: true

编辑:这是响应 header :

> GET /myproject/web/ HTTP/1.1
> Host: mypc.local
> User-Agent: curl/7.43.0
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Date: Tue, 09 Aug 2016 12:15:00 GMT
< Server: Apache
< X-Powered-By: PHP/5.5.31
< Cache-Control: no-cache
< Location: https://mypc.local/myproject/web/
< MS-Author-Via: DAV
< Content-Length: 396
< Content-Type: text/html; charset=UTF-8
<
* Ignoring the response-body
* Connection #0 to host mypc.local left intact
* Issue another request to this URL: 'https://mypc.local/myproject/web/'
* Found bundle for host mypc.local: 0x7f89b2d01780
* Re-using existing connection! (#0) with host mypc.local
* Connected to mypc.local (fe80::ea06:88ff:fecf:61c6) port 443 (#0)
> GET /myproject/web/ HTTP/1.1
.... repeated 20 times

最佳答案

我在使用 Symfony behing AWS ELB 和 Beanstalk 时遇到了同样的问题。 UrlGenerator 生成的所有 url 使用 http 方案。强制使用 https 会使我的 Symfony 感到困惑并运行无限重定向循环。

这与 trusted_proxies 变量有关。我认为 symfony 正在做一个无限循环,因为对他来说你的方案是 http,即使你使用 https。

您在 varnish 代理、负载均衡器后面吗?

对我来说使用this answer来自 totas 解决了这个问题:

Request::setTrustedProxies(array($request->server->get('REMOTE_ADDR')));

我被迫这样做是因为 AWS ELB 具有动态 IP。如果您的代理或负载均衡器具有固定 IP,您可以按照说明使用 truted_proxies var in symfony documentation .

如果有人在 AWS ELB 环境中有更好的解决方案,我很感兴趣。

希望对您有所帮助。

关于php - 强制 https 时 symfony 3 重定向太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38800127/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com