Zend 1.11.6 中允许 HTTP OPTIONS 方法

Posted

技术标签:

【中文标题】Zend 1.11.6 中允许 HTTP OPTIONS 方法【英文标题】:Allow HTTP OPTIONS Method in Zend 1.11.6 【发布时间】:2015-01-24 05:05:14 【问题描述】:

我正在尝试在 Zend 1.11.6 中完成的旧项目上启用跨源资源共享 (CORS),问题似乎是在初始飞行测试 OPTIONS 请求中引发的异常。这是对 HTTP OPTIONS 请求的完整响应:

标题:

Access-Control-Allow-Headers: origin, x-requested-with, content-type
Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS
Access-Control-Allow-Origin: *
Content-Type: application/json
Date: Wed, 26 Nov 2014 00:38:47 GMT
Server: Apache
Transfer-Encoding: chunked
X-Cnection: close

身体


    "success": false,
    "data": "Exception",
    "message": "Method \"optionsaction\" does not exist and was not trapped in __call()",
    "request": "/authenticate",
    "version": "v1",
    "parameters": 
    "controller": "authenticate",
    "action": "options",
    "module": "default"
    

我在library/Zend/Controller/Action.php. 中追踪到Zend_Controller_Action.__call() 的错误消息我的问题是:修改框架以允许此请求的适当位置在哪里?我可以按控制器或项目范围在控制器上执行此操作。

另外,我通过.htaccess 启用了 CORS,我粘贴在下面:

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin"
Header add Access-Control-Allow-Headers "x-requested-with"
Header add Access-Control-Allow-Headers "content-type"
Header add Access-Control-Allow-Methods "PUT"
Header add Access-Control-Allow-Methods "GET"
Header add Access-Control-Allow-Methods "POST"
Header add Access-Control-Allow-Methods "DELETE"
Header add Access-Control-Allow-Methods "OPTIONS"

RewriteEngine On
RewriteCond %REQUEST_FILENAME -s [OR]
RewriteCond %REQUEST_FILENAME -l [OR]
RewriteCond %REQUEST_FILENAME -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

这是我的身份验证控制器选项操作:

public function optionsAction()

    $this->view->data = Array();
    $this->view->success = true;

【问题讨论】:

你能显示你的验证控制器的代码吗? (尤其是围绕options动作,这个方法好像少了) 我没有选项操作。我刚加了一个,我会更新帖子的。它没有改变响应。 【参考方案1】:

看看 Zend_Rest_Route::match(),你需要教/扩展它来映射 OPTIONS 方法到你控制器中的 optionsAction()。

【讨论】:

以上是关于Zend 1.11.6 中允许 HTTP OPTIONS 方法的主要内容,如果未能解决你的问题,请参考以下文章

如何在 NodeJS 14 中允许 CORS

无法在 Spring Security 3 中允许静态资源

GET 参数中允许的字符

如何在 node.js 中允许 CORS?

如何在 CodeIgniter URL 中允许 URI 编码字符?

js vs2013中允许js访问json文件的解决方案