【问题标题】:Why does POST Request return 404为什么POST请求返回404
【发布时间】:2016-01-29 11:15:20
【问题描述】:

我在 PHP 中有这段代码 sn-p:

if (strcasecmp($_POST['method'], 'assignId') == 0) {
$username = $_POST['username'];

$response['code'] = 1;
$response['status'] = $api_response_code[$response['code']]['HTTP Response'];
$sql = "CALL new_person('$username')";

if (($result = $conn->query($sql)) === TRUE) {
    $row = $result->fetch_assoc();
    $response['data'] = $row;
}
deliver_response($response);

new_person 是一个返回 id 的存储过程,它已经过测试并且工作正常,deliver_response 返回输入的 JSON 格式。它也已经过测试并且工作正常。

为什么 POST 请求返回 404 错误?

存储过程正在执行,但没有返回结果。最后,当我将 POST 方法更改为 GET 并发出 get 请求时,它工作正常!

【问题讨论】:

  • 检查网络服务器日志文件...
  • @Charlotte Dunois 服务器没有日志文件...你知道为什么 GET 成功而 POST 没有吗?
  • 每台服务器都有个日志文件。
  • 我不认为你会根据你目前分享的内容得到解决方案。您的 http 服务器可能以不同的方式处理 POST 和 GET 请求,您需要检查其日志和配置。
  • 您的系统是否使用任何形式的路由器?因为可能是您没有在路由器中设置 POST 处理程序

标签: php http-post http-status-code-404


【解决方案1】:

404 错误表示必须处理 post 请求的页面无法加载或不存在。您必须检查 php 和服务器日志,也许您可​​以找到问题的答案。

【讨论】:

  • 当我用 GET 替换 POST 并发出 GET 请求时,它工作正常,这似乎很奇怪!你知道为什么会发生这种情况吗?
  • 您是否使用表单来访问此 php 文件?如果您确定您使用的是 POST 的 GET
  • 目前我只是用 PHPStorm 测试它。它有一个名为 test restful web services 的工具,我正在使用它来创建发布请求
  • 抱歉,我帮不了你,请检查在任何配置中是否可以将方法从 Web 服务更改为 POST
  • 响应很明确。即使这是由脚本或服务器的错误功能产生的,事实是标头响应为 404 并且没有什么可做的。按照@charlotte-dunois 的提示查看服务器日志,请向我们提供您的请求表数据。
【解决方案2】:

Prefix everything,尤其是你的变量。您正在使用的名称由 WordPress 内部使用(请参阅评论表单),因此 WordPress 可能会尝试对您的表单值做一些事情。如果失败,你会得到一个错误。

虽然$_GET 问题通常很容易调试,但$_POST$_REQUEST 的名称就没有那么简单了。

以下列表可能不完整。但它的光秃秃的长度告诉我们一个教训:

避免使用任何可以在字典中找到的名称。为表单名称添加前缀。

WordPress 3.5 使用的$_POST$_REQUEST 中的保留名称列表

这些名称在主题或插件中使用时可能会产生副作用。有些仅用于特定页面 (removeheader),有些用于多个页面或请求。如果可以的话,尽量避免它们。

_ajax_nonce
_page
_per_page
_signup_form
_total
_url
_wp_http_referer
_wp_original_http_referer
_wp_unfiltered_html_comment
_wpnonce
_wpnonce-custom-header-upload

aa
action
action2
active_post_lock
add_new
add_new_users
addmeta
admin_bar_front
admin_color
admin_email
admin_password
admin_password2
ajax
align
allblogs
allusers
alt
approve_parent
approved
attachment
attachment_id
attachments
auth_cookie
author
author_name
autocomplete_type
auto_draft
auto-add-pages
autosave

background-attachment
background-color
background-position-x
background-repeat
banned_email_domains
blog
blog_name
blog_public
blog_upload_space
blogname
bulk_edit

c
calendar
cat
category_base
category_name
catslist
changeit
changes
charset
checkbox
checked
clear-recent-list
closed
comment
comment_approved
comment_author
comment_author_email
comment_author_url
comment_content
comment_date
comment_ID
comment_parent
comment_post_ID
comment_shortcuts
comment_status
comments_listing
comments_popup
confirmdelete
connection_type
content
context
cpage
create-new-attachment
createuser
customize_messenger_channel
customized
customlink-tab

date
date_format
date_format_custom
day
default-header
delete
delete_all
delete_all2
delete_comments
delete_option
delete_tags
delete_widget
deletebookmarks
deletecomment
deleted
deletemeta
deletepost
description
detached
dismiss
display_name
do

edit_date
email
error
exact
excerpt

features
feed
fetch
fheight
file
fileupload_maxk
filter
find_detached
first_comment
first_comment_author
first_comment_url
first_name
first_page
first_post
found_post_id
fwidth

global_terms_enabled
GLOBALS
gmt_offset
guid

height
hh
hidden
hidden_aa
hidden_jj
hidden_mm
hidden_mn
hidden_hh
history
hostname
hour
html-upload

id
ID
ids
id_base
illegal_names
insert-gallery
insertonlybutton
interim-login
item-object
item-type

jj
json
json_data

key

last_name
limited_email_domains
link_id
link_image
link_name
link_rss
link_url
link_visible
linkcheck
locale
locked
log
logged_in_cookie

m
media
media_type
menu
menu_items
menu-item
menu-item-attr-title
menu-item-classes
menu-item-db-id
menu-item-description
menu-item-object
menu-item-object-id
menu-item-parent-id
menu-item-position
menu-item-target
menu-item-title
menu-item-type
menu-item-url
menu-item-xfn
menu-locations
menu-name
message
meta
metakeyinput
metakeyselect
metavalue
minute
mm
mn
mode
monthnum
more
move
multi_number

name
nav-menu-locations
new
new_role
new_slug
new_title
newcat
newcomment_author
newcomment_author_email
newcomment_author_url
newcontent
newuser
nickname
no_placeholder
noapi
noconfirmation
noredir
number

offset
oitar
option
option_page
order
orderby

p
pb
page
page_columns
page_id
page_options
paged
pagegen_timestamp
pagename
parent_id
pass1
pass2
password
permalink_structure
photo_description
photo_src
phperror
ping_status
plugin
plugin_status
pointer
position
post
post_category
post_data
post_format
post_ID
post_id
post_mime_type
post_password
post_status
post_title
post_type
post_view
postid
posts
preview
primary_blog
private_key
ps
public_key
publish
pwd

query

reassign_user
reauth
redirect
redirect_to
ref
referredby
registration
registrationnotification
rememberme
remove-background
removeheader
removewidget
reset-background
resetheader
review
rich_editing
robots
role

s
same
save
savewidget
savewidgets
screen
scrollto
search
second
section
selectall
selection
send
send_password
sentence
short
show_sticky
sidebar
sidebars
signup_for
signup_form_id
site_id
site_name
sitename
size
skip-cropping
spam
spammed
src
ss
stage
start
static
status
sticky
subdomain_install
submit
subpost
subpost_id
super_admin

tab
tag
tag_ID
tag-name
tag_base
tags_input
tax
tax_input
tag-name
target
taxonomy
tb
term
text-color
the-widget-id
theme
theme_status
thumb
timezone_string
time_format
time_format_custom
title
thumbnail_id
trash
trashed
type

undismiss
unspam
unspammed
untrash
untrashed
url
update_home_url
updated
upgrade
upload_filetypes
upload_space_check_disabled
use_ssl
user
user_id
user_login
user_name
username
users

verify-delete
version
visibility
visible

w
weblog_title
welcome_email
welcome_user_email
widget_id
widget_number
widget-id
widget-recent-comments
widget-rss
width
withcomments
withoutcomments
wp_customize
wp_http_referer
wp_screen_options
wp-preview
WPLANG

x1

y1
year

变量名

$method // Filter: 'user_contactmethods'
$post_type_name . -tab
$sidebar_id . _position
$taxonomy_name . -tab
$whitelist_options // Filter: 'whitelist_options'

__i__ . $something // used in widgets
new . $taxonomy->name
new . $taxonomy->name . _parent
quick-search-posttype- . $post_type_name
quick-search-taxonomy- . $taxonomy_name
widget- . $id_base

信用:fuxia

【讨论】:

    【解决方案3】:

    您的代码以if (strcasecmp($_POST['method'], 'assignId') == 0) { 开头 并且 if 语句永远不会关闭,因此您的代码仅在 post 方法上运行

    我假设 Deliver_response 会抛出 404

    【讨论】:

      【解决方案4】:
      1. 请确保您已使用上一页形式的“POST”方法。
      2. 正确使用花括号(您在第一个 if 条件下错过了一个结束花括号)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-24
        • 2022-01-20
        • 1970-01-01
        • 1970-01-01
        • 2017-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多