Symfony 1.4中的路由:是否有办法允许sf_method = OPTIONS用于预检HTTP请求

时间:2015-07-17 08:11:42

标签: symfony1 httprequest symfony-1.4 httpverbs preflight

在某些情况下,您可能都知道浏览器会执行预检的HTTP请求: https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests

我的网络应用程序仍然在Symfony1上。我想实现一个RESTful服务,因此使用Symfony路由来允许特定的HTTP请求方法,如GET或POST(http://symfony.com/legacy/doc/reference/1_4/en/10-Routing#chapter_10_sub_sf_method)。

示例:

login:
  url:   /v1/login
  class: sfRequestRoute
  param: { module: rest, action: login }
  requirements:
    sf_method: [post, put, delete]
    #sf_method: [options] NOT WORKING

在我看来,OPTIONS请求无法定义/处理为sf_method值。因为如果我的想法是对的,我找不到任何信息,我想知道我是对的还是有一个我找不到的解决方案。

提前致谢!

1 个答案:

答案 0 :(得分:1)

很抱歉重振这个老问题,但我找到了解决方案。我遇到了同样的问题,我将请求方法OPTIONS添加到lib/sfRequest.class.phplib/sfWebRequest.class.php中的允许方法中。您可以在此处查看最新提交以查看差异:6ad018c

由于我无法更新原始Symfony1 GitHub存储库,因此我创建了一个副本,其中包含由于各种PHP升级而需要的其他修复程序。由于在preg_replace调用中使用了/e修饰符,因此修复了PHP已弃用的警告。
请注意,这仍然不能使Symfony1 PHP7兼容。我用PHP 5.6.30

成功运行了这个

存储库为https://github.com/diem-project/symfony.git

背景:Diem使用Symfony1(1.4.20),因此GitHub组织diem-project