我有一个Symfony端点,如下所示:
Private Sub Block1_Enter()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim MyData As New DataObject
Dim this As String
Dim oldxt As String
oldtxt = Block1.Text
If InStr(Block1.Text, "&") > 0 Then
this = Trim(Right(Block1.Text, (Len(Block1) - InStr(Block1.Text, "&") - 1))
Block1.Text = "End Date Copied" & this
MyData.SetText this
MyData.PutInClipboard
Application.Wait (Now + #12:00:02 AM#)
Block1.Text = oldtxt
End If
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
当我在支持HTTPS的服务器(或ngrok)上提供服务时,以下工作:
/**
* @Route("/test/")
*/
public function testAction(){
return new JsonResponse(['hello' => 'world']);
}
输出:
{"你好":"世界"}
但是,当我尝试以下操作时(注意缺少尾部斜杠):
curl https://subdomain.ngrok.io/controller/test/
我收到了一个重定向网站,以及以下响应标题:
它添加了斜杠,但似乎将协议更改为HTTP。通过将curl https://subdomain.ngrok.io/controller/test
替换为@Route("/test/")
可以很容易地解决这个问题,在这种情况下,匹配对于缺失和当前的尾部斜杠都有效。但是,我宁愿确保只要Symfony决定重定向是必要的,它就会维护协议。
有关于如何在任何地方强制执行HTTPS的教程,但这并不是我感兴趣的内容。我需要的是Symfony在创建协议时永远不会更改协议重定向。我该怎么做?
编辑:更糟糕的是那些是301重定向。这意味着如果它从浏览器访问过,那么损害是相当长久的。
编辑2:从@Route("/test")
参数中删除尾部斜杠时,它会停止重定向到包含尾部斜杠的网址,因此@Route
将起作用。但是,即使.../test
没有重定向到.../test/
,它现在也会抛出404.因此,Symfony会自动将斜杠附加到URL以进行重定向,但它不会减去它们。 / p>
答案 0 :(得分:0)
我认为您的问题与trustedProxies
对象上的Request
值有关。除非代理在受信任的代理中列出,否则Symfony不会侦听HTTP代理转发标头(特别是X-Forwarded-Proto
)。
将此添加到您的Symfony index.php
或app.php
,可以解决ngrok的问题。
if ($debug) {
Request::setTrustedProxies(
[$_SERVER['REMOTE_ADDR']],
Request::HEADER_X_FORWARDED_PROTO
);
}
有关选项的更多信息,请参阅http://symfony.com/doc/current/deployment/proxies.html。