标签: http-status

如何在(py)curl中获取HTTP状态消息?

花了一些时间研究pycurl和libcurl文档,我仍然找不到(简单)方法,如何在pycurl中获取HTTP状态消息(reason-phrase).

状态代码很简单:

import pycurl
import cStringIO

curl = pycurl.Curl()
buff = cStringIO.StringIO()
curl.setopt(pycurl.URL, 'http://example.org')
curl.setopt(pycurl.WRITEFUNCTION, buff.write)
curl.perform()

print "status code: %s" % curl.getinfo(pycurl.HTTP_CODE)
# -> 200

# print "status message: %s" % ???
# -> "OK"
Run Code Online (Sandbox Code Playgroud)

python libcurl pycurl http-status

21
推荐指数
2
解决办法
2万
查看次数

RESTful API中未登录与未授权的不同HTTP状态

所以派几个不同的状态标题在我的API,包括404,409,201,302等.现在我遇到了问题401 Unauthorized.我正在发送它,如果用户未登录(整个API是权限管理),或者如果用户不满足正在检索/修改的特定资源的特定访问要求.

现在,我还控制前端客户端(jQuery/HTML应用程序),我想区分这两种情况401.我是否应该使用未登录的独特状态?处理它的最佳方法是在标题旁边发送正文内容吗?

rest http http-status-codes http-status

18
推荐指数
2
解决办法
1万
查看次数

使用error_page检索REDIRECT_STATUS

使用.htaccessErrorDocument 404 /error.php,如果访问无效的URL,例如http://example/css/invalid-file.css:

<?php
echo 'REDIRECT_STATUS: ', $_SERVER['REDIRECT_STATUS'], PHP_EOL,
     'REDIRECT_URL: ', $_SERVER['REDIRECT_URL'], PHP_EOL,
     'REDIRECT_REQUEST_METHOD: ', $_SERVER['REDIRECT_REQUEST_METHOD'];
Run Code Online (Sandbox Code Playgroud)

输出:

REDIRECT_STATUS: 404
REDIRECT_URL: /css/invalid-file.css
REDIRECT_REQUEST_METHOD: GET
Run Code Online (Sandbox Code Playgroud)

但是在Nginx使用error_page 404 /error.php;它不起作用,Nginx的结果是:

REDIRECT_STATUS: 200
REDIRECT_URL: 
REDIRECT_REQUEST_METHOD: 
Run Code Online (Sandbox Code Playgroud)

注意:REDIRECT_URL和REDIRECT_REQUEST_METHOD是未定义的

如何设置变量$_SERVER[REDIRECT_STATUS],$_SERVER[REDIRECT_REQUEST_METHOD]$_SERVER[REDIRECT_URL]使用Ngnix

fastcgi_params文件:

fastcgi_param   QUERY_STRING            $query_string;
fastcgi_param   REQUEST_METHOD          $request_method;
fastcgi_param   CONTENT_TYPE            $content_type;
fastcgi_param   CONTENT_LENGTH          $content_length;

fastcgi_param   SCRIPT_FILENAME         $document_root$fastcgi_script_name;
fastcgi_param   SCRIPT_NAME             $fastcgi_script_name;
fastcgi_param   PATH_INFO               $fastcgi_path_info;
fastcgi_param   PATH_TRANSLATED         $document_root$fastcgi_path_info;
fastcgi_param   REQUEST_URI             $request_uri;
fastcgi_param   DOCUMENT_URI            $document_uri;
fastcgi_param …
Run Code Online (Sandbox Code Playgroud)

php redirect nginx http-status

16
推荐指数
1
解决办法
2102
查看次数

请求成功但有警告消息时,合适的HTTP状态代码是什么?

在正确使用REST时,当请求成功但有警告消息时,什么是适合的HTTP状态代码?

在我们的情况下; 客户端是在浏览器上运行的Web应用程 我们更喜欢以下状态代码:

  • 成功请求处理时的HTTP 200,201,204
  • 请求违反某些业务规则时的HTTP 422
  • 处理请求时发生意外异常时的HTTP 500

但是,当请求成功处理时,我们无法确定应使用哪个状态代码,但是需要向客户端发送一些信息或警告消息?

rest http-status-codes http-status json-api

9
推荐指数
1
解决办法
6399
查看次数

当客户配置不正确时,我应该使用什么http状态代码?

我不确定当客户调用我的 API 时要返回什么 http 状态代码,但由于客户可以修复的原因,请求的操作无法完成。

在这种情况下,http 请求本身可能没问题,但直到客户登录前端并更新其配置后才会成功。(我将返回一个带有一些信息性消息的正文来表明这一点。)

412 - 前提条件失败 - 适合这种情况吗?

rest web-services http-status

7
推荐指数
1
解决办法
3010
查看次数

HTTP 404与400的无效查询参数

这是我的请求网址:

http://server.com/app/user/getuser/?userId=9999

注意,这userId是查询参数。未嵌入的路径参数。

我了解如果请求URL为:http : //server.com/app/user/getuser/9999并且ID 9999在数据库中不存在,则应使用404。

但是userId查询参数应使用哪种HTTP状态?现在我返回的是400,而不是404。

query-parameters http-status http-status-code-404 http-status-code-400

7
推荐指数
1
解决办法
2731
查看次数

HTTP状态:409 vs 428

HTTP状态代码列表(维基百科),它说:

409冲突

表示由于请求中的冲突而无法处理请求,例如多个同时更新之间的编辑冲突.

428必备前提条件(RFC 6585)

原始服务器要求请求是有条件的.旨在防止"丢失更新"问题,客户端获取资源的状态,修改它,并将其恢复到服务器,同时第三方修改了服务器上的状态,导致冲突.

然而,428项中提到的"丢失更新"问题不是409项中提到的"编辑冲突"问题吗?

那么问题是两个状态代码之间的区别是什么?我们何时应该使用它们中的哪一个?

http http-status-codes http-status http-status-code-409

6
推荐指数
1
解决办法
1769
查看次数

Laravel Axios使用Vue失败,状态码为419

概念:我有一个允许用户发布问题的应用程序......当用户点击Ask按钮时,我试图使用Vue.js和Axios提交问题.

问题: 70%的时间问题正确提交,但30%的时间失败并返回"无法加载资源:服务器响应状态为419(未知状态)"

在此输入图像描述

我的Vue组件

<template>
    <div id = "main_question_box" class = "tab-pane fade">
        <div class="panel-body posting-field-box">        
            <textarea name="feed_body" class="summernote posting-field form-control"></textarea>
            <button class = "example-btn btn btn-xs btn-default pull-right">View Question Examples</button>                                    
        </div>

        <div class="panel-footer">
            <ul class="list-inline pull-right">
                <li>
                    <button @click = "sendPost" class="feed-post-btn btn btn-submit btn-sm btn-success pl-l pr-l">
                        <span>Ask</span>
                        <i class="fa fa-paper-plane pl-sm"></i>
                    </button>
                </li>
            </ul>

            <div class="clearfix"></div>
        </div>
    </div>
</template>

<script>

    axios.defaults.headers.common['X-CSRF-TOKEN'] = document.querySelector('meta[name="csrf-token"]').getAttribute('content')

    export default {
        props:['timelineId'],
        data(){
            return {
                feed_body: '',
                timeline_id: this.timelineId,
                type: 'Question', …
Run Code Online (Sandbox Code Playgroud)

ajax http-status laravel-5 axios vuejs2

6
推荐指数
1
解决办法
2640
查看次数

NestJS - 发送到客户端后无法设置标头

在我的 NestJs 项目中,我使用装饰器@Res() res并使用响应对象通过多种情况设置自定义响应标头状态。调用时,有时会记录: Error [ERR_HTTP_HEADERS_SENT]: Cannot remove headers after they are sent to the client

在查看了 Github 上的问题列表并在互联网上搜索后,我知道这与 Express 中间件和 NestJs 的内置过滤器有关。

因此,我在 Controller 方法的末尾删除.send()并添加,日志就会消失。 return;

我的第一个代码:

@Get()
get(@Req() req, @Res() res) {
  const result = this.service.getData(req);
  res.status(result.statusCode).json(result.data).send(); // when using .send(), it will cause error
}
Run Code Online (Sandbox Code Playgroud)

我修复后的代码如下所示:

@Get()
get(@Req() req, @Res() res) {
  const result = this.service.getData(req);
  res.status(result.statusCode).json(result.data); // when remove .send(), it will succeed
  return;
}
Run Code Online (Sandbox Code Playgroud)

我的问题:我必须 return;在方法的末尾添加吗?为什么使用.send() 有时 会导致错误但并非总是如此 …

node.js http-status express nestjs

6
推荐指数
1
解决办法
1万
查看次数

当未找到具有通过请求正文传递的 id 的对象时的 HTTP 状态代码

我将通过举个例子来解释我的疑问。

假设我正在设计一个资源端点POSTstudent并且作为 POST 端点的一部分,我希望teacher传递一个 uuid(除了其他细节之外),这是一个必填字段。这样我就可以将 与 关联student起来teacher。现在,如果teacher给定的资源uuid不存在于我的数据库中,那么我应该抛出什么:

400 (Bad request)
404 (Not found).
Run Code Online (Sandbox Code Playgroud)

我认为400这是正确的事情。

如果我有一个像下面这样的请求,那么我会抛出 404 类似

GET /xyy/teachers/{uuid of a teacher}

如果我错了请纠正我。谢谢。

java rest http jax-rs http-status

5
推荐指数
1
解决办法
5427
查看次数

渲染状态:403导致"缺少模板"错误

我有一些方法before_filter,我尝试渲染status: 403.然后我得到:

Missing template v1/examples/index, v1/base/index, application/index with {:locale=>[:en], :formats=>[:html, :text, :js, :css, :ics, :csv, :vcf, :png, :jpeg, :gif, :bmp, :tiff, :mpeg, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json, :pdf, :zip], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}.
Run Code Online (Sandbox Code Playgroud)

然而,我可以渲染nothing: truetext: 'some text'不渲染此错误.我究竟做错了什么?

ruby-on-rails render status http-status ruby-on-rails-4

5
推荐指数
1
解决办法
2822
查看次数

无论 NGINX 状态代码如何,PHP-FPM 始终返回 200

我有一个使用 NGINX 和 PHP-FPM 的基于 PHP 的错误页面配置。但是,例如,当我请求example.com/nothing(不存在的页面)时,PHP-FPM 返回 200 状态代码,而不是 NGINX 返回的正确 404 状态代码。其他错误也会发生这种情况(例如:example.com/assets当 NGINX 的状态为 403 时,PHP-FPM 返回 200)。本质上,我希望 PHP-FPM 做的是镜像 NGINX 显示的状态代码(用 NGINX 显示的状态代码覆盖 200 状态代码),因此我的错误页面显示正确的信息。我知道您可以通过在使用时指定状态代码来更改状态代码http_response_code();,但我宁愿让服务器执行此操作,而不让我硬编码正确的状态代码。

错误页面:<? echo http_response_code(); ?>

NGINX 错误页面配置:

set $errorDocs "/var/www/GLOBAL_RESOURCES/error";
recursive_error_pages on;
location ^~ $errorDocs {
  internal;
  alias $errorDocs;
}
#Resolve error asset location 404s
location /errorAssets {
  root $errorDocs;
}
error_page 404 /404.php;
location = /404.php {
  root $errorDocs;
  include /etc/nginx/xenon-conf/headers/fpm-params.conf;
}
Run Code Online (Sandbox Code Playgroud)

PHP-FPM 设置:

include …
Run Code Online (Sandbox Code Playgroud)

php nginx http-status

4
推荐指数
1
解决办法
5615
查看次数

异常的正确HTTP状态是什么?

如果我的脚本抛出异常,我应该返回什么HTTP状态?

200好的

要么

500内部服务器错误

假设用户请求参数是正确的,但我的脚本中存在一个错误,导致出现错误消息而不是正确的响应(XML,JSON或其他格式).什么应该是HTTP状态?

http http-status

0
推荐指数
1
解决办法
232
查看次数