我有一个带有'PagesController'的Rails4应用程序.
当找不到页面时,show-method抛出一个自定义的异常'PageNotFoundError'.
在我定义的控制器之上
rescue_from PageNotFoundError, with: :render_not_found
render not found是一种私有方法,PagesController看起来像:
def render_not_found
flash[:alert]=t(:page_does_not_exists, title: params[:id])
@pages = Page.all
render :index, status: :not_found #404
end
Run Code Online (Sandbox Code Playgroud)
rails-log in development-mode显示:
Started GET "/pages/readmef" for 127.0.0.1 at 2013-08-02 23:11:35 +0200
Processing by PagesController#show as HTML
Parameters: {"id"=>"readmef"}
..
Completed 404 Not Found in 14ms (Views: 12.0ms)
Run Code Online (Sandbox Code Playgroud)
所以,到目前为止它接缝我的:status =>:not_found有效.
当我curl -v http://0.0.0.0:3000/pages/readmef卷曲日志
curl -v http://localhost:3000/pages/readmef
* About to connect() to localhost port 3000 (#0)
* Trying 127.0.0.1...
* connected
* …Run Code Online (Sandbox Code Playgroud) 在我的RESTful API客户端中,可能会尝试发布已存在于数据库中的信息,这不是错误,而是客户端可以忽略的内容,可能会通知用户已存在的dublicate.
现在我在响应正文中返回409 Conflict和已存在的对象.我觉得这是不正确的,因为:
由于与资源的当前状态冲突,无法完成请求.此代码仅在预期用户可能能够解决冲突并重新提交请求的情况下才允许.响应主体应该包含足够的信息供用户识别冲突的来源.理想情况下,响应实体将包含足够的信息供用户或用户代理解决问题; 但是,这可能是不可能的,也不是必需的. 通过restpatterns.org
而且一般来说,409似乎与PUT更相关.
在这种情况下,正确的答案是什么?可能是303看到其他和位置标题?
在我看来,为了测试处理恶意响应的客户端代码,拥有一个总是返回500的URL是有用的.而且我可以想到其他项目可以从总是返回404,重定向等的URL中受益.是否有人知道提供此功能的免费网站?
我的问题与这个问题密切相关.
我正在使用Requests库来命中HTTP端点.我想检查一下响应是否成功.
我目前正在这样做:
r = requests.get(url)
if 200 <= response.status_code <= 299:
# Do something here!
Run Code Online (Sandbox Code Playgroud)
而不是对200到299之间的值进行那种丑陋的检查,我可以用一个简写吗?
如果您希望传达用户未登录,即使登录机制是基于表单而不是基于HTTP(Basic,Digest等),也可以为AJAX调用的响应返回HTTP 401状态?
这里的答案表明应该使用401:https: //stackoverflow.com/a/6937030/2891365
这篇文章展示了一个使用401进行AJAX响应的人的实际例子:http://www.bennadel.com/blog/2228-some-thoughts-on-handling-401-unauthorized-errors-with-jquery.htm
但是,HTTP/1.1的RFC 2616明确指出需要特殊的头,这意味着它只能用于HTTP身份验证.
10.4.2 401未经授权
该请求需要用户身份验证.响应必须包含一个
WWW-Authenticate标题字段(第14.47节),其中包含适用于所请求资源的质询.
我想我可能会发送一个虚假的标题WWW-Authenticate: WebForm,但仍然符合W3C规范,但感觉它违反了WWW-Authenticate标题的精神.
最后,我似乎无法找到明确说明是否允许HTTP 401响应的权威来源.我错过了这方面的权威来源吗?
authentication ajax http www-authenticate http-response-codes
我试图通过以下方式使用HTML5功能流式传输音频/ wav:
<audio type="audio/wav" src="/sound/10/audio/full" sound-id="10" version="full" controls="">
</audio>
Run Code Online (Sandbox Code Playgroud)
这在Chrome上运行得很好,除了重放或重新定位currentTime属性这一事实:
var audioElement = $('audio').get(0)
audioElement.currentTime
> 1.2479820251464844
audioElement.currentTime = 0
audioElement.currentTime
> 1.2479820251464844
Run Code Online (Sandbox Code Playgroud)
我正在使用以下代码从Grails控制器提供音频文件:
def audio() {
File file = soundService.getAudio(...)
response.setContentType('audio/wav')
response.setContentLength (file.bytes.length)
response.setHeader("Content-disposition", "attachment;filename=${file.getName()}")
response.outputStream << file.newInputStream() // Performing a binary stream copy
response.status = 206
return false
}
Run Code Online (Sandbox Code Playgroud)
虽然Grails正在回馈HTTP响应200而不是206(部分内容),您可以从Chrome的以下输出中看到:
Request URL:http://localhost:8080/sound/10/audio/full
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:identity;q=1, *;q=0
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Cookie:JSESSIONID=9395D8FFF34B7455F937190F521AA1BC
Host:localhost:8080
Range:bytes=0-3189
Referer:http://localhost:8080/cms/sound/10/edit
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.11 …Run Code Online (Sandbox Code Playgroud) 我见过有人使用 HTTP 代码 500 作为所有类型错误情况的通用错误代码(服务器错误、http 错误、代码异常、在 DB 中找不到预期记录、超时异常等)。但是,我也读过并听说此代码 500 仅应在源自应用程序服务器(在我的情况下为 JBoss)的错误的情况下使用,而不是应用程序本身,即不适用于代码异常或无效密码或 DB-record-not - 发现的情况。那么,我们什么时候应该从 REST 服务方法返回 HTTP 状态代码 500?
rest http-status-codes http-response-codes http-status-code-500 internal-server-error
我希望在Spring对请求进行身份验证之后对某些参数进行一些额外的检查(在过滤器中),并基于那些想要允许或阻止登录的检查.如果检查失败,那么我想发送一个401响应而不是春天发送的200.任何帮助将受到高度赞赏.
提前致谢!
我注意到Mozilla HTTP响应代码文档说明了这一点
方法PUT,DELETE和OPTIONS永远不会产生200 OK响应.
但是,它并不清楚实际应该使用什么样的响应.我最好的猜测是204:
204:没有内容
没有要为此请求发送的内容,但标头可能很有用.用户代理可以使用新资源更新其资源的缓存标头.
任何人都可以评论这是否是用于响应OPTIONS请求的正确代码?
我有一个API来执行一些批量处理任务.让我们说它确实命名了一些资源.
我批量传递了7个请求,其中5个成功更新,2个失败.
我的问题是如何处理响应.使用HTTP我不能同时返回成功和错误.
有一个部分成功的HTTP代码,但我需要立即返回所有资源的个别响应.反正我们能做到吗?