📄 response.c
字号:
print_content_type(req); req_write(req, CRLF); req_flush(req);}/* R_BAD_REQUEST: 400 */void send_r_bad_request(request * req){ SQUASH_KA(req); req->response_status = R_BAD_REQUEST; if (req->http_version != HTTP09) { req_write(req, http_ver_string(req->http_version)); req_write(req, " 400 Bad Request" CRLF); print_http_headers(req); req_write(req, "Content-Type: " HTML CRLF CRLF); /* terminate header */ } if (req->method != M_HEAD) req_write(req, "<HTML><HEAD><TITLE>400 Bad Request</TITLE></HEAD>\n" "<BODY><H1>400 Bad Request</H1>\nYour client has issued " "a malformed or illegal request.\n</BODY></HTML>\n"); req_flush(req);}/* R_UNAUTHORIZED: 401 */void send_r_unauthorized(request * req, const char *realm_name){ SQUASH_KA(req); req->response_status = R_UNAUTHORIZED; if (req->http_version != HTTP09) { req_write(req, http_ver_string(req->http_version)); req_write(req, " 401 Unauthorized" CRLF); print_http_headers(req); req_write(req, "WWW-Authenticate: Basic realm=\""); req_write(req, realm_name); req_write(req, CRLF); req_write(req, "Content-Type: " HTML CRLF CRLF); /* terminate header */ } if (req->method != M_HEAD) { req_write(req, "<HTML><HEAD><TITLE>401 Unauthorized</TITLE></HEAD>\n" "<BODY><H1>401 Unauthorized</H1>\nYour client does not " "have permission to get URL "); req_write_escape_html(req, req->request_uri); req_write(req, " from this server.\n</BODY></HTML>\n"); } req_flush(req);}/* R_FORBIDDEN: 403 */void send_r_forbidden(request * req){ SQUASH_KA(req); req->response_status = R_FORBIDDEN; if (req->http_version != HTTP09) { req_write(req, http_ver_string(req->http_version)); req_write(req, " 403 Forbidden" CRLF); print_http_headers(req); req_write(req, "Content-Type: " HTML CRLF CRLF); /* terminate header */ } if (req->method != M_HEAD) { req_write(req, "<HTML><HEAD><TITLE>403 Forbidden</TITLE></HEAD>\n" "<BODY><H1>403 Forbidden</H1>\nYour client does not " "have permission to get URL "); req_write_escape_html(req, req->request_uri); req_write(req, " from this server.\n</BODY></HTML>\n"); } req_flush(req);}/* R_NOT_FOUND: 404 */void send_r_not_found(request * req){ SQUASH_KA(req); req->response_status = R_NOT_FOUND; if (req->http_version != HTTP09) { req_write(req, http_ver_string(req->http_version)); req_write(req, " 404 Not Found" CRLF); print_http_headers(req); req_write(req, "Content-Type: " HTML CRLF CRLF); /* terminate header */ } if (req->method != M_HEAD) { req_write(req, "<HTML><HEAD><TITLE>404 Not Found</TITLE></HEAD>\n" "<BODY><H1>404 Not Found</H1>\nThe requested URL "); req_write_escape_html(req, req->request_uri); req_write(req, " was not found on this server.\n</BODY></HTML>\n"); } req_flush(req);}/* R_LENGTH_REQUIRED: 411 *//* FIXME: incomplete */void send_r_length_required(request * req){ SQUASH_KA(req); req->response_status = R_LENGTH_REQUIRED; if (req->http_version != HTTP09) { req_write(req, http_ver_string(req->http_version)); req_write(req, " 411 Length Required" CRLF); print_http_headers(req); req_write(req, "Content-Type: " HTML CRLF); print_last_modified(req); print_content_type(req); req_write(req, CRLF); } if (req->method != M_HEAD) { req_write(req, "<HTML><HEAD><TITLE>411 Length Required</TITLE></HEAD>\n" "<BODY><H1>411 Length Required</H1>\nThe requested URL "); req_write_escape_html(req, req->request_uri); req_write(req, " requires that a valid Content-Length header be " "sent with it.\n</BODY></HTML>\n"); } req_flush(req);}/* R_PRECONDITION_FAILED: 412 */void send_r_precondition_failed(request * req){ SQUASH_KA(req); req->response_status = R_PRECONDITION_FAILED; if (req->http_version != HTTP09) { req_write(req, http_ver_string(req->http_version)); req_write(req, " 412 Precondition Failed" CRLF); print_http_headers(req); req_write(req, "Content-Type: " HTML CRLF CRLF); /* terminate header */ } if (req->method != M_HEAD) { req_write(req, "<HTML><HEAD><TITLE>412 Precondition Failed</TITLE></HEAD>\n" "<BODY><H1>412 Precondition Failed</H1>\n</BODY></HTML>\n"); } req_flush(req);}/* R_BAD_REQUEST_URI_TOO_LONG: 414 */void send_r_request_uri_too_long(request * req){ char body[] = "<HTML><HEAD><TITLE>414 Request URI Too Long</TITLE></HEAD>\n" "<BODY><H1>414 Request URI Too Long</H1>\nYour client has issued " "a malformed or illegal request.\n</BODY></HTML>\n"; static unsigned int len = 0; req->response_status = R_REQUEST_URI_TOO_LONG; if (req->http_version != HTTP09) { req_write(req, http_ver_string(req->http_version)); req_write(req, " 414 Request URI Too Long" CRLF); print_http_headers(req); req_write(req, "Content-Type: " HTML CRLF); req_write(req, "Content-Length: "); if (!len) len = strlen(body); req_write(req, simple_itoa(len)); req_write(req, CRLF CRLF); } if (req->method != M_HEAD) req_write(req, body); req_flush(req);}/* R_INVALID_RANGE: 416 */void send_r_invalid_range(request * req){ static char body[] = "<HTML><HEAD><TITLE>416 Invalid Range</TITLE></HEAD>\n" "<BODY><H1>416 Invalid Range</H1>\n</BODY></HTML>\n"; static unsigned int body_len = 0; SQUASH_KA(req); req->response_status = R_INVALID_RANGE; if (req->http_version != HTTP09) { req_write(req, http_ver_string(req->http_version)); req_write(req, " 416 Invalid Range" CRLF); print_http_headers(req); if (!body_len) body_len = strlen(body); req_write(req, "Content-Length: "); req_write(req, simple_itoa(body_len)); req_write(req, CRLF "Content-Type: " HTML CRLF CRLF); /* terminate header */ } if (req->method != M_HEAD) { req_write(req, body); } req_flush(req);}/* R_ERROR: 500 */void send_r_error(request * req){ SQUASH_KA(req); req->response_status = R_ERROR; if (req->http_version != HTTP09) { req_write(req, http_ver_string(req->http_version)); req_write(req, " 500 Server Error" CRLF); print_http_headers(req); req_write(req, "Content-Type: " HTML CRLF CRLF); /* terminate header */ } if (req->method != M_HEAD) { req_write(req, "<HTML><HEAD><TITLE>500 Server Error</TITLE></HEAD>\n" "<BODY><H1>500 Server Error</H1>\nThe server encountered " "an internal error and could not complete your request.\n" "</BODY></HTML>\n"); } req_flush(req);}/* R_NOT_IMP: 501 */void send_r_not_implemented(request * req){ SQUASH_KA(req); req->response_status = R_NOT_IMP; if (req->http_version != HTTP09) { req_write(req, http_ver_string(req->http_version)); req_write(req, " 501 Not Implemented" CRLF); print_http_headers(req); req_write(req, "Content-Type: " HTML CRLF CRLF); /* terminate header */ } /* we always write the body, because we don't *KNOW* * what the method is. */ req_write(req, "<HTML><HEAD><TITLE>501 Not Implemented</TITLE></HEAD>\n" "<BODY><H1>501 Not Implemented</H1>\nPOST to non-script " "is not supported in Boa.\n</BODY></HTML>\n"); req_flush(req);}/* R_BAD_GATEWAY: 502 */void send_r_bad_gateway(request * req){ SQUASH_KA(req); req->response_status = R_BAD_GATEWAY; if (req->http_version != HTTP09) { req_write(req, http_ver_string(req->http_version)); req_write(req, " 502 Bad Gateway" CRLF); print_http_headers(req); req_write(req, "Content-Type: " HTML CRLF CRLF); /* terminate header */ } if (req->method != M_HEAD) { req_write(req, "<HTML><HEAD><TITLE>502 Bad Gateway</TITLE></HEAD>\n" "<BODY><H1>502 Bad Gateway</H1>\nThe CGI was " "not CGI/1.1 compliant.\n" "</BODY></HTML>\n"); } req_flush(req);}/* R_SERVICE_UNAVAILABLE: 503 */void send_r_service_unavailable(request * req){ /* 503 */ static char body[] = "<HTML><HEAD><TITLE>503 Service Unavailable</TITLE></HEAD>\n" "<BODY><H1>503 Service Unavailable</H1>\n" "There are too many connections in use right now.\n" "Please try again later.\n" "</BODY></HTML>\n"; static unsigned int _body_len; static char *body_len; if (!_body_len) _body_len = strlen(body); if (!body_len) body_len = strdup(simple_itoa(_body_len)); if (!body_len) { log_error_time(); perror("strdup of _body_len from simple_itoa"); } SQUASH_KA(req); req->response_status = R_SERVICE_UNAV; if (req->http_version != HTTP09) { req_write(req, http_ver_string(req->http_version)); req_write(req, " 503 Service Unavailable" CRLF); print_http_headers(req); if (body_len) { req_write(req, "Content-Length: "); req_write(req, body_len); req_write(req, CRLF); } req_write(req, "Content-Type: " HTML CRLF CRLF); /* terminate header */ } if (req->method != M_HEAD) { req_write(req, body); } req_flush(req);}/* R_NOT_IMP: 505 */void send_r_bad_version(request * req, const char *version){ SQUASH_KA(req); req->response_status = R_BAD_VERSION; if (req->http_version != HTTP09) { req_write(req, http_ver_string(req->http_version)); req_write(req, " 505 HTTP Version Not Supported" CRLF); print_http_headers(req); req_write(req, "Content-Type: " HTML CRLF CRLF); /* terminate header */ } if (req->method != M_HEAD) { req_write(req, "<HTML><HEAD><TITLE>505 HTTP Version Not Supported</TITLE></HEAD>\n" "<BODY><H1>505 HTTP Version Not Supported</H1>\nHTTP versions " "other than 0.9 and 1.0 " "are not supported in Boa.\n<p><p>Version encountered: "); req_write(req, version); req_write(req, "<p><p></BODY></HTML>\n"); } req_flush(req);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -