标签: http-response-codes

如何在使用rescue_from时使用Rails4和RSpec测试渲染状态:404

我有一个带有'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)

rspec ruby-on-rails http-response-codes

20
推荐指数
3
解决办法
2万
查看次数

找到重复项时,REST POST请求的响应状态代码是什么?

在我的RESTful API客户端中,可能会尝试发布已存在于数据库中的信息,这不是错误,而是客户端可以忽略的内容,可能会通知用户已存在的dublicate.

现在我在响应正文中返回409 Conflict和已存在的对象.我觉得这是不正确的,因为:

由于与资源的当前状态冲突,无法完成请求.此代码仅在预期用户可能能够解决冲突并重新提交请求的情况下才允许.响应主体应该包含足够的信息供用户识别冲突的来源.理想情况下,响应实体将包含足够的信息供用户或用户代理解决问题; 但是,这可能是不可能的,也不是必需的. 通过restpatterns.org

而且一般来说,409似乎与PUT更相关.

在这种情况下,正确的答案是什么?可能是303看到其他和位置标题?

rest post http http-response-codes restful-architecture

18
推荐指数
1
解决办法
5431
查看次数

是否有网站返回500(和其他)HTTP响应代码进行测试?

在我看来,为了测试处理恶意响应的客户端代码,拥有一个总是返回500的URL是有用的.而且我可以想到其他项目可以从总是返回404,重定向等的URL中受益.是否有人知道提供此功能的免费网站?

testing httpresponse http-response-codes

17
推荐指数
4
解决办法
4651
查看次数

请求 - 如何判断您是否收到成功消息?

我的问题与这个问题密切相关.

我正在使用Requests库来命中HTTP端点.我想检查一下响应是否成功.

我目前正在这样做:

r = requests.get(url)
if 200 <= response.status_code <= 299:
    # Do something here!
Run Code Online (Sandbox Code Playgroud)

而不是对200到299之间的值进行那种丑陋的检查,我可以用一个简写吗?

python http httprequest http-response-codes python-requests

15
推荐指数
3
解决办法
1万
查看次数

在没有WWW-Authenticate的情况下返回AJAX响应的HTTP 401状态

如果您希望传达用户未登录,即使登录机制是基于表单而不是基于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

12
推荐指数
1
解决办法
2176
查看次数

如何使用代码206为Grails提供流式传输音频文件?

我试图通过以下方式使用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)

grails html5 http audio-streaming http-response-codes

11
推荐指数
1
解决办法
2798
查看次数

我应该什么时候从 REST 应用程序向客户端返回 HTTP 状态代码 500(内部服务器错误)?

我见过有人使用 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

10
推荐指数
1
解决办法
6892
查看次数

发送SC_UNAUTHORIZED以获取经过身份验证的请求

我希望在Spring对请求进行身份验证之后对某些参数进行一些额外的检查(在过滤器中),并基于那些想要允许或阻止登录的检查.如果检查失败,那么我想发送一个401响应而不是春天发送的200.任何帮助将受到高度赞赏.

提前致谢!

servlets filter spring-security http-response-codes

9
推荐指数
0
解决办法
61
查看次数

什么HTTP响应代码应该用于OPTION请求?

我注意到Mozilla HTTP响应代码文档说明了这一点

方法PUT,DELETE和OPTIONS永远不会产生200 OK响应.

但是,它并不清楚实际应该使用什么样的响应.我最好的猜测是204:

204:没有内容

没有要为此请求发送的内容,但标头可能很有用.用户代理可以使用新资源更新其资源的缓存标头.

任何人都可以评论这是否是用于响应OPTIONS请求的正确代码?

http http-response-codes http-options-method

8
推荐指数
3
解决办法
4097
查看次数

REST API响应部分成功

我有一个API来执行一些批量处理任务.让我们说它确实命名了一些资源.

我批量传递了7个请求,其中5个成功更新,2个失败.

我的问题是如何处理响应.使用HTTP我不能同时返回成功和错误.

有一个部分成功的HTTP代码,但我需要立即返回所有资源的个别响应.反正我们能做到吗?

rest http-response-codes

8
推荐指数
1
解决办法
5006
查看次数