首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不允许删除ServiceStack Backbone.Todos 405

不允许删除ServiceStack Backbone.Todos 405
EN

Stack Overflow用户
提问于 2012-10-04 16:25:36
回答 2查看 2K关注 0票数 6

我意识到当单击Backbone.Todos示例“清除x已完成的项目”时,我得到了一个DELETE 405 not allowed...

我从以前的帮助和文档中了解到,如果我想启用删除PUT补丁...我需要设置

X-http-method-override : DELETE

如果它是一个表单或jquery。

但我不确定如何在Backbone.Todos示例中做到这一点,因为我是backbone.js的新手。

您能指出如何修复删除的405吗?谢谢。

编辑

我可以随时改变路线去……

代码语言:javascript
运行
复制
[Route("/todos/add")] //C - post
[Route("/todos/{id}")] //R - get
[Route("/todos/{id}/edit")] //U - post
[Route("/todos/{id}/delete")] //D - post

因此,只有Post和Get足以完成这项工作。但与以下内容相比,它看起来并不是很Restful:

代码语言:javascript
运行
复制
[Route("/todos/{id}", "Delete")] //D - delete

是吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-04 22:23:12

Backbone.js对此有特殊支持,您可以通过以下方式启用:

代码语言:javascript
运行
复制
Backbone.emulateHTTP = true

来自他们的网站:

emulateHTTP Backbone.emulateHTTP = true

如果您想使用不支持Backbone默认REST/HTTP方法的遗留web服务器,您可以选择打开Backbone.emulateHTTP。设置此选项将使用HTTP POST伪造PUT和DELETE请求,使用true方法设置X-HTTP- method -Override标头。如果emulateJSON也为on,则true方法将作为附加的_method参数传递。

代码语言:javascript
运行
复制
Backbone.emulateHTTP = true;

model.save();  // POST to "/collection/id", with "_method=PUT" + header.

405响应可能是在IIS中运行的其他程序(如WebDav )的结果,这些程序将在请求到达ServiceStack之前劫持并拒绝请求。否则,如果它在客户端被拒绝,您可能希望使用enable CORS来允许发送额外的HTTP谓词。

票数 5
EN

Stack Overflow用户

发布于 2012-10-05 07:55:56

经过深入研究,我意识到这不是主干设置(顺便说一下,这是backbone.js的第34行中的Backbone.emulateHTTP = false; )

我查了Fiddler,上面写着:

代码语言:javascript
运行
复制
Module  WebDAVModule
Notification  MapRequestHandler
Handler  ServiceStack.Factory
Error Code  0x00000000

正如mythz怀疑的那样,这是WebDAV劫持并拒绝了请求。然后我发现了如何在web.config中禁用WebDAV:

代码语言:javascript
运行
复制
  ...
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="WebDAVModule" />
    </modules>
    <validation validateIntegratedModeConfiguration="false"/>
    <handlers>
      <add path="*" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true"/>
    </handlers>
  </system.webServer>
  ...

现在它很好地工作了。谢谢!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12723202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档