簡體   English   中英

如何使用mod_python引發HTTP錯誤

[英]How do you throw an HTTP error with mod_python

我有一個設置,使用mod_python發布者在其中提供簡單的python頁面。 在某些時候,我想讓python函數引發一個標准的Apache錯誤-例如,如果缺少所需文件,則拋出500錯誤。 如何在mod_python腳本中引發apache錯誤?

我不是python專家,但是從此文檔中看來,您可以執行以下操作:

raise apache.SERVER_RETURN, apache.HTTP_INTERNAL_SERVER_ERROR

如果鏈接腐爛,這是文檔的報價:

處理程序函數將始終傳遞對請求對象的引用。 (在本手冊中,請求對象通常由req變量引用。)

每個處理程序都可以返回:

apache.OK,這意味着請求的此階段已由此處理程序處理,並且未發生任何錯誤。

apache.DECLINED,表示此處理程序尚未處理完成請求的這一階段,Apache需要在后續模塊中尋找另一個處理程序。

apache.HTTP_ERROR,表示發生HTTP錯誤。 HTTP_ERROR可以是以下任意一個:

 HTTP_CONTINUE = 100 HTTP_SWITCHING_PROTOCOLS = 101 HTTP_PROCESSING = 102 HTTP_OK = 200 HTTP_CREATED = 201 HTTP_ACCEPTED = 202 HTTP_NON_AUTHORITATIVE = 203 HTTP_NO_CONTENT = 204 HTTP_RESET_CONTENT = 205 HTTP_PARTIAL_CONTENT = 206 HTTP_MULTI_STATUS = 207 HTTP_MULTIPLE_CHOICES = 300 HTTP_MOVED_PERMANENTLY = 301 HTTP_MOVED_TEMPORARILY = 302 HTTP_SEE_OTHER = 303 HTTP_NOT_MODIFIED = 304 HTTP_USE_PROXY = 305 HTTP_TEMPORARY_REDIRECT = 307 HTTP_BAD_REQUEST = 400 HTTP_UNAUTHORIZED = 401 HTTP_PAYMENT_REQUIRED = 402 HTTP_FORBIDDEN = 403 HTTP_NOT_FOUND = 404 HTTP_METHOD_NOT_ALLOWED = 405 HTTP_NOT_ACCEPTABLE = 406 HTTP_PROXY_AUTHENTICATION_REQUIRED= 407 HTTP_REQUEST_TIME_OUT = 408 HTTP_CONFLICT = 409 HTTP_GONE = 410 HTTP_LENGTH_REQUIRED = 411 HTTP_PRECONDITION_FAILED = 412 HTTP_REQUEST_ENTITY_TOO_LARGE = 413 HTTP_REQUEST_URI_TOO_LARGE = 414 HTTP_UNSUPPORTED_MEDIA_TYPE = 415 HTTP_RANGE_NOT_SATISFIABLE = 416 HTTP_EXPECTATION_FAILED = 417 HTTP_UNPROCESSABLE_ENTITY = 422 HTTP_LOCKED = 423 HTTP_FAILED_DEPENDENCY = 424 HTTP_INTERNAL_SERVER_ERROR = 500 HTTP_NOT_IMPLEMENTED = 501 HTTP_BAD_GATEWAY = 502 HTTP_SERVICE_UNAVAILABLE = 503 HTTP_GATEWAY_TIME_OUT = 504 HTTP_VERSION_NOT_SUPPORTED = 505 HTTP_VARIANT_ALSO_VARIES = 506 HTTP_INSUFFICIENT_STORAGE = 507 HTTP_NOT_EXTENDED = 510 

作為返回HTTP錯誤代碼的替代方法,處理程序可以通過引發apache.SERVER_RETURN異常並提供HTTP錯誤代碼作為異常值來發出錯誤信號,例如:

 raise apache.SERVER_RETURN, apache.HTTP_FORBIDDEN 

我相信是:

def my_action(req):
  # all the status code constants are defined in the apache module 
  req.status = apache.HTTP_INTERNAL_SERVER_ERROR 
  req.content_type = some_mime_type
  req.write(content)
  raise apache.HTTP_SERVER_RETURN, apache.DONE

提高apache.DONE告訴Apache不要寫出自己的錯誤頁面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM