409

Conflict

官方
雷苏斯的现状存在着冲突

HTTP状态代码409的规范

409 Conflict状态代码表明,由于与目标资源的当前状态发生冲突,请求无法完成。 该代码用于用户可能能够解决冲突并重新提交请求的情况。 服务器应该生成一个有效载荷,其中包括足够的信息,使用户能够识别冲突的来源。

冲突最可能发生在对PUT请求的响应中。例如,如果正在使用版本管理,并且被 PUT 的表示包括对资源的更改,而该更改与先前(第三方)请求所做的更改相冲突,那么源服务器可能会使用 409 Conflict 响应来表明它不能完成该请求。在这种情况下,响应表示可能会包含对基于修订历史的差异进行合并的有用信息。

来源/引自: 409 Conflict HTTP状态代码由6.5.8的RFC7231部分指定。

如何用PHP抛出一个409状态代码?

要在一个网页上抛出HTTP状态代码409,可以使用PHP函数http_response_code。其语法如下: http_response_code(409) (PHP 5 >= 5.4.0, PHP 7, PHP 8)

测试409 HTTP状态代码

为了能够在客户端显示HTTP状态代码(本例中为409 Conflict)和其他信息,必须用F12打开开发控制台。然后导航到 "网络 "标签。现在可以打开页面,网站(例如index.php)应该在网络标签中可见。这必须被选中,然后必须选择Herder部分。然后,用户将看到以下结果:

状态代码 409 Conflict
概述
URL: https://http-statuscode.com/errorCodeExample.php?code=409
状况: 409 Conflict
那些: Network
IP地址: XX.XX.XX.XX
状态代码 409 Conflict

我如何解决409状态代码的问题?

409 Conflict 冲突状态代码表示客户端发送的请求与目标资源的当前状态相冲突。例如,当两个客户端试图同时更新同一资源时,就会出现这种情况。

409 Conflict 冲突状态代码的原因

  • 同时更新:如前所述,409 Conflict 状态代码的常见原因是多个客户端试图同时修改资源:如果客户端发送的数据不符合服务器的预期格式或验证规则,则可能返回 409 Conflict 状态代码。
  • 逻辑冲突:即使数据格式正确,也可能发生逻辑冲突。例如,在一个预订系统中,有两个人试图同时预订同一个座位。

解决 409 Conflict 冲突状态代码的步骤:

  • 数据验证:确保客户端发送的数据格式正确且一致。检查服务器提供的验证规则,并相应调整您的请求。
  • 实施锁定机制:对于可能出现并发更新的系统,锁定机制可能非常有用。这可防止多个用户同时对资源进行更改。
  • 实施版本控制:
  • 向用户提供反馈:当发生 409 Conflict 冲突时,应向客户端提供清晰易懂的错误消息,以便他们知道如何继续操作:服务器日志通常包含有关冲突原因的其他信息。
  • 重发逻辑:在某些情况下,自动重发请求可能非常有用,尤其是当冲突是由可能迅速变化的短期条件引起时。

如何为状态代码409创建你自己的错误页面

使用 "Apache "和 "NGINX "网络服务器,创建你自己的409 Conflict错误页面是相对容易的。

Apache Webserver

网络服务器 "Apache "是互联网上最常见的网络服务器之一。要在 "Apache "中创建自己的409 Conflict错误页面,必须在以下文件中做如下修改。

File: .htaccess
ErrorDocument 409 /errors/409.html

NGINX Webserver

与网络服务器 "Apache "类似,"NGINX "也在互联网上广泛使用。要在 "NGINX "中创建自己的409 Conflict错误页面,必须在以下文件中做如下修改。

File: sites-enabled/default
error_page 409 /409.html;
location = /409.html {
    root /usr/share/nginx/html;
    internal;
}

409状态代码的浏览器兼容性

Chrome no data
Edge no data
Firefox no data
Opera no data
Safari no data
Chrome Android no data
Firefox for Android no data
Opera Android no data
Safari on iOS no data
Internet no data
WebView Android no data

编程语言中的常量

HttpStatusCode.Conflict
http.StatusConflict
Response::HTTP_CONFLICT
httplib.CONFLICT
http.client.CONFLICT
http.HTTPStatus.CONFLICT
:conflict
作者: Tony Brüser
作者: Tony Brüser

Tony Brüser 是一位热衷于 HTTP 状态代码的网络开发人员。

LinkedInGitHub