是否有一种简单的方法来获取HTTP状态代码System.Net.WebException?
各种HTTP 3XX重定向代码之间的差异对我来说并不清楚.是的,我已经阅读了规范,但这里的标准和实际做法之间似乎存在一些差异.
该301重定向代码似乎很清楚:这意味着资源已被永久移动到另一个URI,以及将来的请求应使用URI.
并且307重定向代码似乎也很清楚:这意味着重定向是临时的,未来的请求仍然应该使用原始URI.
但我不能告诉区别是什么之间302和303,或者为什么他们中有谁真正从不同的301.它似乎302本来是一个临时重定向,(比如307),但在实践中,大多数浏览器都把它当成了一个303.但是a 303和a 之间有什么区别301?是301应该意味着重定向是更永久的吗?
我正在开发一个RESTful API,其中http://server/thingyapi/thingyblob/1234返回与thingy#1234相关联的文件(也称为"blob")以进行下载.但可能是请求是在服务器中不存在文件的情况下进行的,但绝大多数情况下都会在以后提供.服务器中有一个批处理过程,可以为所有东西生成所有blob.Thingy 1234已经存在,其数据(blob除外)已经可用.服务器还没有生成东西1234的blob.
我不想要回归404; 那是不存在的东西.这是一个存在的东西,但它的blob尚未生成.有点像YouTube视频的"处理".我认为重定向代码也不合适; 没有"其他"网址可供尝试.
在这种情况下返回的HTTP状态代码是什么?
language-agnostic rest http http-status-codes batch-processing
我试过了:
app.get('/', function(req, res, next) {
var e = new Error('error message');
e.status = 400;
next(e);
});
Run Code Online (Sandbox Code Playgroud)
和:
app.get('/', function(req, res, next) {
res.statusCode = 400;
var e = new Error('error message');
next(e);
});
Run Code Online (Sandbox Code Playgroud)
但总是宣布错误代码为500.
出于某种原因,我的dashcode开发的应用程序刚刚停止了AJAXing并返回0的状态代码.这发生在你身上吗?有人知道为什么会这样吗?
当用户未登录并尝试访问需要登录的页面时,重定向到登录页面的正确HTTP状态代码是什么?
10.3.1 300多种选择
所请求的资源对应于一组表示中的任何一个,每个表示具有其自己的特定位置,并且正在提供代理驱动的协商信息(部分12),以便用户(或用户代理)可以选择优选表示并重定向其请求到该位置.
除非是HEAD请求,否则响应应该包括一个实体,其中包含资源特征和位置列表,用户或用户代理可以从中选择最合适的资源特征和位置.实体格式由Content-Type头字段中给出的媒体类型指定.取决于格式和功能
用户代理,可以自动选择最合适的选择.但是,该规范没有为这种自动选择定义任何标准.
如果服务器具有首选的表示选择,则它应该在Location字段中包含该表示的特定URI; 用户代理可以使用Location字段值进行自动重定向.除非另有说明,否则该响应是可缓存的.
10.3.2 301永久移动
已为所请求的资源分配了一个新的永久URI,并且此资源的任何将来的引用应该使用返回的URI之一.具有链接编辑功能的客户端应尽可能自动将对Request-URI的引用重新链接到服务器返回的一个或多个新引用.除非另有说明,否则该响应是可缓存的.
新的永久URI应该由响应中的Location字段给出.除非请求方法是HEAD,否则响应的实体应该包含一个带有指向新URI的超链接的短超文本注释.
如果收到301状态代码以响应GET或HEAD以外的请求,则用户代理不得自动重定向请求,除非用户可以确认,因为这可能会改变发出请求的条件.
Run Code Online (Sandbox Code Playgroud)Note: When automatically redirecting a POST request after receiving a 301 status code, some existing HTTP/1.0 user agents will erroneously change it into a GET request.10.3.3 302找到
请求的资源暂时驻留在不同的URI下.由于重定向有时可能会被更改,因此客户端应该继续使用Request-URI来处理将来的请求.如果由Cache-Control或Expires头字段指示,则此响应仅可缓存.
临时URI应该由响应中的Location字段给出.除非请求方法是HEAD,否则响应的实体应该包含一个带有指向新URI的超链接的短超文本注释.
如果收到302状态代码以响应GET或HEAD以外的请求,则用户代理不得自动重定向请求,除非用户可以确认,因为这可能会改变发出请求的条件.
Run Code Online (Sandbox Code Playgroud)Note: RFC 1945 and RFC 2068 specify that the client is not allowed to change the method on the redirected request. However, most existing user agent implementations treat 302 as …
这是API调用的原始请求:
POST http://192.168.3.45:8080/api/v2/event/log?sessionKey=b299d17b896417a7b18f46544d40adb734240cc2&format=json HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: application/json
Content-Length: 86
Host: 192.168.3.45:8080
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
{"eventType":"AAS_PORTAL_START","data":{"uid":"hfe3hf45huf33545","aid":"1","vid":"1"}}"""
Run Code Online (Sandbox Code Playgroud)
此请求返回成功(2xx)响应.
现在我试图使用requests以下命令发布此请求:
>>> import requests
>>> headers = {'content-type' : 'application/json'}
>>> data ={"eventType":"AAS_PORTAL_START","data{"uid":"hfe3hf45huf33545","aid":"1","vid":"1"}}
>>> url = "http://192.168.3.45:8080/api/v2/event/log?sessionKey=9ebbd0b25760557393a43064a92bae539d962103&format=xml&platformId=1"
>>> requests.post(url,params=data,headers=headers)
<Response [400]>
Run Code Online (Sandbox Code Playgroud)
对我来说一切都很好看,我不太确定我发错了什么来得到400响应.
如何通过urllib获取标头的代码?
假设我编写了一个REST服务,其目的是将新数据项添加到系统中.
我计划发帖到
http://myhost/serviceX/someResources
Run Code Online (Sandbox Code Playgroud)
假设有效,我应该使用什么样的响应代码?我可以回复什么内容.
我正在查看HTTP响应代码的定义并看到这些可能性:
200:返回描述或包含动作结果的实体;
201:这意味着创建.含义*请求已完成,并导致创建新资源.新创建的资源可以由响应实体中返回的URI引用,其中由Location头字段给出的资源的最具体URI.响应应该包括一个实体,其中包含资源特征和位置的列表,用户或用户代理可以从中选择最合适的资源特征和位置.实体格式由Content-Type头字段中给出的媒体类型指定.*
后者听起来更符合Http规范,但我一点也不清楚
响应应该包括一个包含资源特征和位置列表的实体
手段.
建议?解释?
http ×4
python ×2
redirect ×2
rest ×2
ajax ×1
c# ×1
content-type ×1
express ×1
httprequest ×1
java ×1
node.js ×1
uri ×1
urllib ×1
webexception ×1