标签: http-error

REST-API,无效DELETE的正确HTTP状态代码

我正在设计一个RESTful API,它使用HTTP状态代码和动词作为通信的关键组件.

在宗教层面上,它是在RESTafarian的狂热者一面.

决定HTTP状态代码的经验法则是此图或类似资源.

  • GET /api/documents/1- 401用户尚未登录
  • GET /api/documents/1- 200用户有权限
  • GET /api/documents/1- 403用户没有权限
  • DELETE /api/documents/1- 204用户有权限
  • DELETE /api/documents/1- 403用户没有权限
  • GET /api/documents/2- 404用户权限无关,资源不存在
  • DELETE /api/documents/2- 404用户权限无关,资源不存在
  • DELETE /api/documents/1- 404用户拥有权限,资源已被删除
  • DELETE /api/documents/1- 404用户没有权限,资源已被删除

目标:

  • 使用一致性
  • 不要通过错误公开私人信息
  • 正确使用客户端或中间层缓存的状态代码
  • 尽早失败,将查询保持在最低限度

在这种情况下,有很多不同的状态代码可供选择(404,403,410,405),在我的情况下,我在现有资源上使用403,如果它不是你的不清除缓存,而404是非所有非现有资源,以告诉客户擦除该数据.

但我不喜欢在不属于你的资源上从403切换到404.

我很想听听其他人如何解决这个用例,或者一般情况下你认为适合发送所有无效DELETE调用的状态代码,因为我认为这是最难以简洁的一个.

(整个互联网上的很多REST讨论和答案都只是"扔了400个糟糕的请求,无论如何都不关心",我没有需要快速修复或务实破解的问题.谢谢)

api permissions rest http http-error

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

从Mechanize中的HTTPError中恢复

我正在为一些现有的python代码编写一个函数,该代码将作为参数传递给Mechanize浏览器对象.

我在浏览器中填写表格中的一些细节,并用于response = browser.submit()将浏览器移动到新页面,并从中收集一些信息.

不幸的是,我偶尔会收到以下错误:

httperror_seek_wrapper: HTTP Error 500: Internal Server Error

 

我已经在我自己的浏览器中导航到该页面,果然,我偶尔会直接看到这个错误,所以我认为这是一个服务器问题,与robots.txt标题或类似内容无关.

问题是提交后,browser对象的状态发生了变化,我无法继续使用它.我首先想到的是先尝试采取深拷贝和使用,如果我遇到了问题,但提供了错误TypeError: object.__new__(cStringIO.StringO) is not safe, use cStringIO.StringO.__new__()的描述在这里.

我也试过使用browser.back()但得到NoneType错误.

有没有人有这个好的解决方案?

 

解决方案(感谢下面的karnesJ.R):

下面一个很好的解决方案使用优秀的requests库(这里的文档).requests具有填写表单并通过post或提交的功能get,其中重要的是不会改变br对象的状态.

一个优秀的网站允许我们测试各种错误代码,并在顶部有一个表单界面,我已经测试过它.我br在这个站点创建一个对象,然后定义一个从中选择表单的函数br,提取相关信息,但是通过提交requests- 这样br对象没有改变并且可以重复使用.错误代码导致requests返回垃圾,但不会使br不可用.

如下所述,这需要更多的设置时间,但非常值得.

import mechanize
import requests

def testErrorCodes(br,theCodes):
    for x in theCodes:

        br.select_form(nr=0) …
Run Code Online (Sandbox Code Playgroud)

python mechanize http-error

12
推荐指数
1
解决办法
1387
查看次数

为什么我在 dping apt-get update 时看到 Failed to fetch 错误

我的 jenkins 作业中的 apt-get 更新失败,在拉取 docker hub 相关存储库时出现 Http404 错误

12:38:54 + uname -a
12:38:54 Linux c612ce175fe3 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
12:28:18 W: Failed to fetch https://apt.dockerproject.org/repo/dists/ubuntu-trusty/main/binary-amd64/Packages  HttpError404
12:28:18 
12:28:18 W: Failed to fetch https://apt.dockerproject.org/repo/dists/ubuntu-trusty/main/binary-i386/Packages  HttpError404
12:28:18 
Run Code Online (Sandbox Code Playgroud)

apt http-error docker

12
推荐指数
1
解决办法
8596
查看次数

Node.s用Res.Render快速返回错误代码

我正在使用带有express的nodejs.我想返回自定义404未找到错误页面.我有它的工作.但是我还没有找到如何使用res.render()返回错误代码的解决方案.我看到了一些类似的问题,但它们已经过时并使用了弃用的方法.任何帮助将不胜感激.

http-error node.js express

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

从Angular中的HttpInterceptor访问HTTP错误响应主体

我有一个HttpInterceptor来捕获错误并在模态中显示它们.除了错误代码和消息之外,我还想显示响应的主体,它实际上包含更准确的错误描述(例如,在500内部服务器错误上).我怎样才能在角度上实现这一目标?(我使用的是4.3.6版本.)

我已经查看了相关的问题,但像HttpErrorResponse._body或类似的答案对我不起作用.此外,在控制台中检查错误响应时,HttpErrorResponse.error设置为null.

以下是我的拦截器目前的样子:

@Injectable()
export class HttpErrorInterceptor implements HttpInterceptor {
  public constructor(private httpErrorService: HttpErrorService) { }

  public intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    return next.handle(req).do(event => {
    }, (error: HttpErrorResponse) => {
      console.log('HTTPERROR INTERCEPTOR');
      console.log(error);
      if (error.status >= 400) {
        this.httpErrorService.onError(error);
      }
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

http-error typescript angular-http-interceptors angular

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

在 Pytube 中获取 Http 错误 404。这是什么原因?

错误信息/代码

此代码曾经在 4 天前工作,现在显示错误。我尝试使用 pytube3 但这没有帮助。

from pytube import YouTube** 
YouTube('https://www.youtube.com/watch?v=JbBsqmKclXE').streams**
Run Code Online (Sandbox Code Playgroud)

()
----> 1 YouTube('https://www.youtube.com/watch?v=JbBsqmKclXE').streams 中的HTTPError Traceback(最近一次调用最后一次)

14 帧
/usr/lib/python3.7/urllib/request.py in http_error_default(self, req, fp, code, msg, hdrs)

647 class HTTPDefaultErrorHandler(BaseHandler):
648     def http_error_default(self, req, fp, code, msg, hdrs):
Run Code Online (Sandbox Code Playgroud)

--> 649 引发 HTTPError(req.full_url, code, msg, hdrs, fp) 650 651 类 HTTPRedirectHandler(BaseHandler):

HTTPError:HTTP 错误 404:未找到

python youtube-api http-error pytube

11
推荐指数
1
解决办法
7666
查看次数

web.config错误失败,responseMode ="File"

根据Microsoft的文档,对于静态(即HTML)内容,web.config应该读取responseMode="File"每个错误.

目前,我的web.config包括

<httpErrors errorMode="Custom">
    <!-- remove statusCodes -->
    <error statusCode="404" path="/error/404.html" responseMode="ExecuteURL" />
</httpErrors>
Run Code Online (Sandbox Code Playgroud)

这将返回正确的自定义错误页面,但返回200 OK状态代码.

当我将"ExecuteURL"更改为"File"时,我的服务器确实返回404,但不显示自定义错误页面.相反,我收到消息"您要查找的资源已被删除,其名称已更改,或暂时不可用".

如何读取web.config,返回静态文件,还有404?

编辑:<customErrors>在得知该标记用于IIS <= 6.0后删除了问题

web-config http-error iis-7.5 http-status-code-404

10
推荐指数
1
解决办法
2368
查看次数

页面加载时出现不一致的 ERR_HTTP2_SERVER_REFUSED_STREAM 错误

我确实有至少两个 WordPress 网站,它们非常不一致地抛出了不同数量的net::ERR_HTTP2_SERVER_REFUSED_STREAM错误。当这些错误发生时,抛出的错误数量在不同页面加载(或重新加载)之间变化很大,从 4 个带有该错误的请求到大约 60 个,有时甚至更多(如果页面有很多请求)。实际受影响的资源/请求似乎完全是随机的,因此不会留下任何线索。

\n

如果发生这些错误,则它们的发生大多会持续存在(在进行简单页面刷新或硬刷新时),直到浏览器重新启动为止。他们甚至很少在重新启动后留下来。

\n

当这个问题确实发生并且浏览器/系统进入这种错误状态时,这些错误也会发生在 WordPress 后端加载类似的基本文件中.../wp-includes/js/wp-lists.min.js?ver=5.7

\n

至少有两名用户在 Chrome、Opera 和 Edge 中登录和退出 WordPress 时遇到过这种行为。在 Opera 和 Edge 中,我们没有安装任何浏览器扩展。据我们所知,其他用户从未遇到过此问题,尽管其中一些用户多次访问该网站。

\n

造成这种情况的原因是什么和/或解决它的方法是什么?

\n
\n

两个站点上安装的插件列表:

\n

wordpress hosting web-hosting http-error

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

如何在urllib中捕获404错误?(python 3)

我一直在阅读类似问题的几十个例子,但我无法得到我见过的任何解决方案或它们的变体.我是屏幕抓取,我只想忽略404错误(跳过页面).我明白了

'AttributeError:'module'对象没有属性'HTTPError'.

我也试过'URLError'.我已经看到接近完全相同的语法作为工作答案.有任何想法吗?这是我得到的:

import urllib
import datetime
from bs4 import BeautifulSoup

class EarningsAnnouncement:
    def __init__(self, Company, Ticker, EPSEst, AnnouncementDate, AnnouncementTime):
        self.Company = Company
        self.Ticker = Ticker
        self.EPSEst = EPSEst
        self.AnnouncementDate = AnnouncementDate
        self.AnnouncementTime = AnnouncementTime

webBaseStr = 'http://biz.yahoo.com/research/earncal/'
earningsAnnouncements = []
dayVar = datetime.date.today()
for dte in range(1, 30):
    currDay = str(dayVar.day)
    currMonth = str(dayVar.month)
    currYear = str(dayVar.year)
    if (len(currDay)==1): currDay = '0' + currDay
    if (len(currMonth)==1): currMonth = '0' + currMonth
    dateStr = currYear + currMonth + currDay
    webString …
Run Code Online (Sandbox Code Playgroud)

python http-error

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

Ngrok net :: ERR_CONTENT_LENGTH_MISMATCH错误

我正在尝试建立一个ngrok隧道到本地运行的网络服务器端口5000服务.我可以通过localhost:5000访问网站,但是当我在端口5000上设置一个ngrok隧道时,我得到的net::ERR_CONTENT_LENGTH_MISMATCH所有css都有错误和Chrome 46.0和Safari 9.0.1中的js资源.

从Firefox 42访问ngrok链接时,我没有收到这些错误.

有谁知道为什么会这样,我可以做些什么来解决它?

webserver http tunnel http-error ngrok

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