有时(经常请求资源时)我正在拦截带有验证码的(HTML)资源的呈现.拦截不会产生任何重定向.它发生在同一个URI上.
我现在想知道哪些HTTP状态代码最适合这些要求:
它应该在语义上适合.
谷歌应该明白这个拦截是一个临时条件,不应该影响其索引中的现有资源.
Web浏览器将显示带有验证码的响应正文.
这些是我到目前为止确定的候选人:
由于与资源的当前状态冲突,无法完成请求.此代码仅在预期用户可能能够解决冲突并重新提交请求的情况下才允许.响应主体应该包含足够的信息供用户识别冲突的来源.
这听起来很完美.冲突状态来自那些经常请求资源的客户端.响应还包括足够的信息来识别冲突的根源并解决冲突.
由于服务器临时过载,服务器当前无法处理请求.这意味着这是一个暂时的条件[...].如果已知,则可以在Retry-After报头中指示延迟的长度.
这听起来适度.我甚至可能知道延迟的长度并提供这样的标题.但我在这里错过了用户可以解决问题的重点.此外,范围太广(服务器重载与资源过载).
captcha http http-status-codes http-status-code-503 http-status-code-409
我正在使用SP2010客户端对象模型上传到文档库,遵循Microsoft的主管:http://msdn.microsoft.com/en-us/library/ee956524.aspx#SP2010ClientOMOpenXml_Uploading
执行以下代码时,我面临HTTP 409(冲突)状态代码.
var clientContext = new ClientContext("http://myservername/sites/subsitename") { Credentials = LogonCredentials };
using (var fileStream = new FileStream(@"C:\Temp\Test.txt", FileMode.Open))
{
Microsoft.SharePoint.Client.File.SaveBinaryDirect(clientContext, "/MyDocLibraryName/Test_FromClientOM.txt", fileStream, true);
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
409冲突
表示由于请求中的冲突而无法处理请求,例如多个同时更新之间的编辑冲突.
和
428必备前提条件(RFC 6585)
原始服务器要求请求是有条件的.旨在防止"丢失更新"问题,客户端获取资源的状态,修改它,并将其恢复到服务器,同时第三方修改了服务器上的状态,导致冲突.
然而,428项中提到的"丢失更新"问题不是409项中提到的"编辑冲突"问题吗?
那么问题是两个状态代码之间的区别是什么?我们何时应该使用它们中的哪一个?
即使阅读了许多文档,书籍和规范, 我也无法100%确定我应该使用http状态代码403还是409。
有人认为403应该仅用于授权问题,但是看到twitter的api使用403违反更新限制,我认为403的实际使用范围不仅仅限于授权问题。也许可以用来告诉请求违反了服务器端约束。
而且,从规格上看,当我们可以预期客户端可以解决此问题时,似乎使用409。
我会欣赏现实世界中的各种示例,其中包括何时使用403和何时使用409,以及在我的情况下使用哪种代码的见解,我将在下面的摘要中进行介绍(以免违反NDA) )。
编辑后:该示例很长,但简单地说,它是关于约束验证失败时返回什么代码。当约束验证失败时,您是否总是返回400?我应该返回400,而不是403或409吗?
有一个客户告诉服务A哪个书架包含一本特定的书。在向DB记录哪个书放在哪个书架上时,服务A可以告诉客户该客户正试图将书放在错误的书架上。服务A可以通过询问另一个服务B来告知这一点,该服务B在决定书的去向时基本上具有某种逻辑。
在这种情况下,应该为A服务使用什么http代码?
(该请求与服务B的决定相冲突-409?-但客户端无法解决此问题,因为当服务B做出决定时,该请求是永久性的。书号和书架号都在path参数中(即,它们是此端点中的唯一参数),因此客户端无法真正做出任何更改来解决同一请求的问题)
此外,客户端可以告诉服务A不再使用书架(因为书架已满或出于任何原因)。当客户告诉服务A不再使用书架C,然后客户告诉服务A它想将另一本书放到书架C上时,服务A应该告诉客户它不能这样做。在这种情况下,应该为A服务使用什么http代码?(该请求将与表明书架C未使用的数据库状态发生冲突-409?但是客户端无法解决此问题,因为当不使用书架时,该书架在服务A中是永久的,并且永远不会在使用中再次-不是409?)
预先感谢您的时间和投入!
rest http-status-codes http-status-code-403 http-status-code-400 http-status-code-409
我配置了 Gradle 以将插件发布到 GitHub 包。当运行相应的任务时,我收到(合法的)409,因为我尝试推送相同的工件两次。显然,没有办法将 GitHub 包配置为接受覆盖,所以我想知道是否可以告诉 Gradle 忽略 409 错误并继续处理下一个文件。
我查看了API,但找不到任何有用的东西。
我使用的示例 Java 代码:
public static AjaxResponse createUser(User newUser) {
Keycloak keycloak = Keycloak.getInstance(
SERVER_URL,
REALM,
USERNAME,
PASSWORD,
CLIENT_ID);
// Get Realm
RealmResource realmResource = keycloak.realm(REALM);
UsersResource userResource = realmResource.users();
// Create User Representation
UserRepresentation user = getUserRepresentation(newUser);
// Create user (requires manage-users role)
try {
System.out.println("Username: {}", userResource.get("USER-ID-HERE").toRepresentation().getUsername());
System.out.println("Count: " + userResource.count());
Response response = userResource.create(user);
System.out.println("Response: " + response.getStatusInfo());
System.out.println("Response: " + response.getStatus());
System.out.println("Response: " + response.getMetadata());
} catch (Exception e) {
System.out.println(ExceptionUtils.getStackTrace(e));
return new AjaxResponse("Fail", false);
}
return …Run Code Online (Sandbox Code Playgroud)