对于存在的网页,但对于没有足够权限的用户(他们未登录或不属于正确的用户组),要提供的正确HTTP响应是什么?401?403?别的什么?到目前为止,我对每个人的看法都不太清楚.哪些用例适合每个响应?
http-status-codes http-response-codes http-headers http-status-code-403 http-status-code-401
Web应用程序的常见方案是在修改数据库的POST后重定向.就像在用户创建数据库对象后重定向到新创建的数据库对象一样.
似乎大多数Web应用程序使用302重定向,但如果您希望使用GET获取重定向中指定的URL,则303根据规范似乎是正确的做法.从技术上讲,使用302,浏览器应该使用与获取原始URL相同的方法获取指定的URL,这将是POST.大多数浏览器不会这样做.
302 - http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.3
303 - http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.4
我应该使用302还是303?
假设一个是编写HTTP服务器/客户端,支持HTTP/1.0有多重要?它现在仍然在任何地方使用吗?
编辑:我与HTTP/1.0的有用性/重要性不太关注,而量软件实际使用它的非内部(单元测试是内部使用,例如)目的在现实世界(浏览器,机器人,智能手机/傻瓜等...).
由于我们的网络服务器配置错误,主域名将302重定向发送到新位置.我们解决了这个问题.清空浏览器缓存时,一切正常.
对于没有清空缓存的"普通"客户端:302重定向在浏览器中保留多长时间?
我正在寻找默认设置下每个主要浏览器(Chrome,Firefox,Safari,Opera,Edge,IE 12)的特定缓存时间(如果有的话).
devise_for创建包含DELETE路由的路由,我们要删除它,并且devise_for不支持:except或:only选项.
如何从中删除路线Rails.application.routes?在draw街区或之后?
以下是错误的详细信息,这是我们需要删除路由的原因.
我们向自定义UJS控制器操作发出DELETE请求
在控制器操作中,我们删除了我们想要的内容,然后执行302重定向.这是一个坏主意,我们已经通过返回一些JSON来纠正它.
这个错误已经修复,但我想删除路由.
以下是我最后所做的事情,这是由Jose'Valim引用的赏金获胜者所建议的:
在config/routes.rb,我在devise_for呼叫上面添加了这个,它设置了其余的'people'路由:
delete '/person', :to => 'people#destroy'
Run Code Online (Sandbox Code Playgroud)
然后在我现有的people_controller.rb,我添加了一个无操作方法:
def destroy
render :nothing => true
end
Run Code Online (Sandbox Code Playgroud)
我仍然有点恼火,没有一种简单的方法可以从RouteSet中删除路由.此外,delete路由仍然存在于设计控制器,但它不会被调用,因为rails查找第一个匹配config/routes.rb并返回它.
我有一个Django项目,我正在使用视图来处理不同的HTTP方法.该POST处理的对象的创建,然后重定向到同一个视图作为GET(或因此我认为),使用Django的redirect()快捷方式(HTTPResponseRedirect)返回新创建的对象.这很好.我尝试了同样的事情,PUT但我陷入了重定向循环.在我挠了一会儿后,我偶然发现了这个SO答案,然后我推断,由于重定向不处理POST数据,请求变成了一个GET.
当我从以下位置进行重定向时,我通过观察日志来确认这一点POST:
[15/Dec/2014 00:47:43] "POST /client/151/ HTTP/1.1" 302 0
[15/Dec/2014 00:47:43] "GET /client/151/ HTTP/1.1" 200 395
Run Code Online (Sandbox Code Playgroud)
然而,PUT停留a PUT并将我引入重定向循环,直到它出错.
[14/Dec/2014 23:07:36] "PUT /api/asset/6779 HTTP/1.1" 301 0
[14/Dec/2014 23:07:37] "PUT /api/asset/6779/ HTTP/1.1" 302 0
[14/Dec/2014 23:07:37] "PUT /api/asset/6779 HTTP/1.1" 301 0
[14/Dec/2014 23:07:38] "PUT /api/asset/6779/ HTTP/1.1" 302 0
[14/Dec/2014 23:07:38] "PUT /api/asset/6779 HTTP/1.1" 301 0
[14/Dec/2014 23:07:39] "PUT /api/asset/6779/ HTTP/1.1" 302 …Run Code Online (Sandbox Code Playgroud) python django http http-status-code-301 http-status-code-302
我使用快递4.13.3(最新)和以下代码:
var express = require('express')
var app = express()
app.get('/test', function (req, res, next) {
res.send('hello!')
})
app.post('/test', function (req, res, next) {
res.redirect('/test')
})
app.put('/test', function (req, res, next) {
res.redirect('/test')
})
app.listen(5001)
// GET /test -> 'hello!'
// POST /test -> 'hello!'
// PUT /test -> ERR_TOO_MANY_REDIRECTS
Run Code Online (Sandbox Code Playgroud)
POST重定向到GET,但PUT重定向到PUT.是否可以使PUT重定向到GET(与POST相同)?