3

你们都可能知道浏览器在某些情况下会执行预检 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 值。因为如果我的想法是正确的,我找不到任何信息,所以我想知道我是否正确,或者我也找不到解决方案。

提前致谢!

4

1 回答 1

1

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

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

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

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

于 2017-05-11T10:17:45.457 回答