【发布时间】: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动作,这个方法好像少了)
-
我没有选项操作。我刚加了一个,我会更新帖子的。它没有改变响应。
标签: php apache zend-framework cors