gpt4 book ai didi

php - 使用 apache 和 windows 为 Backbone.js 设置 RESTful 服务

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:39:32 26 4
gpt4 key购买 nike

我正在尝试在我的 apache localhost 上设置一个 RESTful web 服务作为我的主干应用程序的后端。我试过:

  1. 正在设置 WebDAV,但在日志中收到以下错误消息

    [2012 年 2 月 23 日星期四 21:46:17] [错误] [客户端 127.0.0.1] 无法为/clusters/19 添加新内容。 [403,#0],推荐人:http://ideas.localhost/[2012 年 2 月 23 日星期四 21:46:17] [错误] [客户端 127.0.0.1] 打开资源时出错。 [500,#0],推荐人:http://ideas.localhost/

  2. 使用 Backbone.emulateHTTP,导致 405 方法不允许错误(我猜这是由 X-HTTP-Method-Override: PUT 引起的 header ,因为正常的 POST 请求工作正常

我在 Windows 7 上运行 Apache 2.2.21 和 PHP 5.3,下面是我的 .htaccess 文件。我还使用 SLIM 框架来处理 url 路由。

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

和虚拟主机配置

<VirtualHost *:80>
DocumentRoot "G:/sites/ideas"
Dav On // I also had security setting set to Allow all as it's just my localhost
ServerName ideas.localhost
ErrorLog "logs/ideas.localhost-error.log"
CustomLog "logs/ideas.localhost-access.log" combined
SetEnv APPLICATION_ENV development
</VirtualHost>

多年来我一直在努力让一些东西发挥作用,所以非常感谢任何帮助。

最佳答案

不敢相信我在打开赏金后不到一个小时就解决了这个问题,但是嘿嘿。

问题是 Slim 没有内置的能力来处理 Backbone 使用的 X-HTTP-Method-Override header ,并且错误消息的描述性不强。在 request.php 的底部添加以下内容并在 Backbone 中使用 emulateHTTP 模式修复它

protected function checkForHttpMethodOverride() {
if ( isset($this->post[self::METHOD_OVERRIDE]) ) {
$this->method = $this->post[self::METHOD_OVERRIDE];
unset($this->post[self::METHOD_OVERRIDE]);
if ( $this->isPut() ) {
$this->put = $this->post;
}
} else if(isset($this->headers['x-method-override'] )) {
$this->method = $this->headers['x-method-override'];
if ( $this->isPut() ) {
$this->put = $this->post;
}
}
}

PS - 我创建了一个 pull request SLIM 默认包含它,所以如果您认为将它包含在框架中是个好主意,请在那里发表评论

关于php - 使用 apache 和 windows 为 Backbone.js 设置 RESTful 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9422210/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com