你们可能都知道浏览器在某些情况下会预检 HTTP 请求: https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS#Preflighted_requests
我的 Web 应用程序仍在 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 值。因为我找不到任何信息,如果我的想法是正确的,我想知道我是否是正确的,或者也许有我找不到的解决方案。
提前致谢!
最佳答案
很抱歉重新提出这个老问题,但我找到了解决方案。我遇到了同样的问题,我将请求方法 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
关于symfony1 - Symfony 1.4 中的路由 : Is there a way to allow sf_method = OPTIONS for preflight HTTP requests,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31471172/