我想使用PHP检查网站在特定实例中是启动还是关闭.我开始知道curl会获取文件的内容,但我不想阅读网站的内容.我只想查看网站的状态.有没有办法检查网站的状态?我们可以使用ping来检查状态吗?我可以从服务器获取状态信号(404,403等).一小段代码可能对我有很大帮助.
在jquery Ajax调用中,我正在处理200和304的statusCode.但我也定义了"错误""捕获可能返回的任何错误.
如果存在相关的验证消息,则返回状态代码400 - 错误请求.
然后在进入我定义的statusCode"400"函数之前进入"错误"函数.这意味着两个动作发生.
理想情况下,我不想定义"错误"和"成功",只定义"statusCode"但我需要的是有一个"Else",这样我就不需要声明每个只存在2-3个的statusCode想要区别对待.
$.ajax({
type: 'POST',
contentType: "application/json",
url: "../API/Employees.svc/" + EmployeeId + "/Company/" + CompanyId,
data: jsonString,
statusCode: {
200: function () { //Employee_Company saved now updated
hideLoading();
ShowAlertMessage(SaveSuccessful, 2000);
$('#ManageEmployee').dialog('close');
},
304: function () { //Nothing to save to Employee_Company
hideLoading();
$('#ManageEmployee').dialog('close');
if (NothingToChange_Employee) {
ShowAlertMessage(NothingToUpdate, 2000);
} else {
ShowAlertMessage(SaveSuccessful, 2000);
}
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
AjaxError(XMLHttpRequest, textStatus, errorThrown);
}
});
Run Code Online (Sandbox Code Playgroud) 我正在实现一个简单的注册/登录模块.
在测试用户凭据时,我开始考虑哪种HTTP状态代码适用于用户发送带有错误凭据的请求的情况.
起初,我认为401 Unauthorized是一个不错的状态代码,但是当用户试图在未经授权的情况下获取某些资源时,它似乎会更好.
之后,我切换到409冲突
此代码仅在预期用户可能能够解决冲突并重新提交请求的情况下才允许.
所以,朋友们,请给我一个建议,应该使用哪个状态代码.
我正在尝试捕获重定向URL的http状态代码3XX/302.但我无法得到它,因为它提供了200个状态代码.
这是代码:
import requests
r = requests.get('http://goo.gl/NZek5')
print r.status_code
Run Code Online (Sandbox Code Playgroud)
我想这应该发出301或302,因为它重定向到另一个页面.我曾经尝试过几次重定向网址(例如http://fb.com),但它又发布了200.应该怎样做才能正确捕获重定向代码?
我的应用程序发送给第三方SOA服务器的数据是复杂的XML.服务器所有者确实提供了XML模式(.xsd),并且由于服务器拒绝无效的XML消息,我需要在发送之前在本地验证它们.
我可以使用独立的XML模式验证器,但它们很慢,主要是因为解析模式文件所需的时间.所以我以HTTP服务器的形式编写了我自己的模式验证器(在Java中,如果这很重要),缓存已经解析的模式.
问题是:在验证过程中很多事情都可能出错.除意外异常和成功验证外:
由于它是HTTP服务器,我想为客户端提供有意义的状态代码.对于上述所有情况,服务器是否应答400错误(错误请求)?或者它们与HTTP无关,它应该在正文中回复200并带有消息?还有其他建议吗?
更新:主应用程序是用Ruby编写的,它没有一个好的xml架构验证库,因此单独的验证服务器不会过度工程.
HTTP定义状态401 Unauthorized以丢失身份验证,但此状态仅适用于HTTP身份验证.当未经授权的请求发生时,我应该使用基于会话cookie的系统返回什么状态?
考虑用户正在删除帖子的简单情况.这是一个简单的HTTP DELETE/POST请求,其中包含一个必填字段post_id.
如果没有提供post_id,服务器应该怎么做?
显然,用户永远不应该遇到这种行为,所以让我们是纯粹的.
我的第一次采取将是400个不良请求,但规范说
The request could not be understood by the server due to malformed syntax. The client SHOULD NOT repeat the request without modifications.
Run Code Online (Sandbox Code Playgroud)
我会说从字段/ http POV中删除字段是可以的,它是应用程序域特定的语义要求.
200 OK说明不好,500觉得很奇怪,因为这是请求问题.
几点思考?
当服务器返回202 - Accepted异步请求的状态代码时,为请求完成提供估计的适当方法是什么?
从HTTP规范(我添加的斜体):
202接受
该请求已被接受处理,但处理尚未完成.[...]
返回此响应的实体应该包括请求的当前状态的指示,以及指向状态监视器的指针或用户可以期望满足请求的某些估计.
以下是一些想法:
Cache-Control吗?X-响应标头,但X-在RFC 6648中不推荐使用标头?X-)特定响应标头?如果是这样,它应该如何命名?SO问题自定义HTTP标头:命名约定给出了一些想法,但在弃用之后它只回答了如何格式化HTTP标头,而不是如何命名它们.我与我的同事讨论了在202 Accepted响应中使用Location头的一个很好的概念.
故事从这里开始分析PHP header()函数的行为.有趣的摘录:
第二个特例是"Location:"标题.它不仅这个头发送回浏览器,但是除非201或3xx状态代码已经被设置也返回重定向(302)状态代码到浏览器.
它们未在此默认行为中包含202状态代码.看起来他们并不期望202响应有一个位置,事实上:
header("HTTP/1.1 202");
header("Location: http://example.com");
Run Code Online (Sandbox Code Playgroud)
将客户端重定向到位置URL.当然,也可以改变与header()函数的第三个参数,但一下就吸引了我的注意力被这种行为:为什么他们了解,默认202预计不会举行Location头?
然后我查看RFC,寻找202状态的官方含义.有趣的摘录:
返回此响应的实体应该包括请求的当前状态的指示,以及指向状态监视器的指针或用户可以期望满足请求的某些估计.
它没有明确地引用位置标头,就像之前(在相同的RFC文档中)201响应一样.这可能是PHP人员理解202响应不应该保持Location头的原因.指针会被解释为Location头还是PHP家伙做出了错误的假设?如果标准允许Location头有202响应:不应该像201响应定义更明确的官方文档?
最后,我回顾了最新的RFC版本,并发现编辑方面的一些变化:
与此响应发送表示应该描述请求的当前状态和(或嵌入)点状态监视器,一个当所述请求将被兑现的估计提供给用户.
同样,没有明确的假设指向 Location头.
简而言之,经过上述修订后:我是否使用带有202响应的Location标头符合RFC?
经过大量的谷歌搜索和Stackoverflowing,我仍然不清楚,因为许多文章和问题/答案太笼统(包括403 Forbidden vs 401 Unauthorized HTTP响应,这不是专门针对我的用例).
问题:当用户未登录并请求查看仅应向登录用户显示的某些页面时,正确的HTTP状态代码是什么?