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 方法的主要内容,如果未能解决你的问题,请参考以下文章