在某些情况下,您可能都知道浏览器会执行预检的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值。因为如果我的想法是对的,我找不到任何信息,我想知道我是对的还是有一个我找不到的解决方案。
提前致谢!
答案 0 :(得分:1)
很抱歉重振这个老问题,但我找到了解决方案。我遇到了同样的问题,我将请求方法OPTIONS
添加到lib/sfRequest.class.php
和lib/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