使用 PHP 时发布请求有效,但是当我将 Axios 与 React 一起使用时,它会失败并出现 500 内部错误,我该如何解决?
Posted
技术标签:
【中文标题】使用 PHP 时发布请求有效,但是当我将 Axios 与 React 一起使用时,它会失败并出现 500 内部错误,我该如何解决?【英文标题】:Post request works when use PHP, but it fails with a 500 Internal Error when I use Axios with React, how can I fix that? 【发布时间】:2020-09-10 11:00:18 【问题描述】:我在 php 中创建了以下代码:
$url = $API_URL.'/api/v1/courses/'.$COURSE_ID.'/quizzes/'.$QUIZ_ID.'/reports?quiz_report[report_type]=student_analysis&quiz_report[includes_all_versions]=1';
$crl = curl_init();
$headr = array();
$headr[] = 'Content-length: 0';
$headr[] = 'Content-type: application/json';
$headr[] = 'Authorization: Bearer '.$API_KEY;
curl_setopt($crl, CURLOPT_URL, $url );
curl_setopt($crl, CURLOPT_HTTPHEADER,$headr);
curl_setopt($crl, CURLOPT_POST,true);
$rest = curl_exec($crl);
curl_close($crl);
此代码完美运行。我注意到的重要一点是,如果我删除部分“$headr[] = 'Content-length: 0';”,请求将失败并出现 400 Bad Request 错误。
现在我需要用 React 来做这件事,我使用 Axios,这是我使用的代码:
var config2 =
headers:
'Access-Control-Allow-Origin': '*',
'Authorization': "Bearer 11748~BTNBIfTKrIORcK7SVw09Gryq5bc1MipitSFA4K4Lwh1inbv0jfj5z7mL9U6p1GV3",
'Accept' : 'application/json',
'Content-Length' : '0',
'Content-type' : 'application/json'
;
let course_id = '8717'
let quiz_id = '58320'
try
let url2 = Constantes.URL_PREFIX+'/courses/'+course_id+'/quizzes/'+quiz_id+'/reports?quiz_report[report_type]=student_analysis&quiz_report[includes_all_versions]=1'
const response = await axios.post( url2, config2 )
console.log("xxx - response.data")
console.log(response.data)
catch(err)
console.log("ERRO - xxx: "+err)
运行代码后,我收到 500 内部错误。 如果我更改以下代码 常量响应 = 等待 axios.post(url2, config2) 到 常量响应 = 等待 axios.get(url2, config2) 该代码有效,但我需要使用 axios.post 运行此代码,就像我使用 PHP 代码一样。
React 应用程序使用 CORS 代理完成所有请求,我也遇到了错误 '内容长度':'0', 当我使用 axios.get 时,我得到的错误是 拒绝设置不安全的标头“Content-Length”
当我使用 axios.post 时没有出现这个错误,而不是这个错误我得到了 500 内部错误。
有什么提示可以解决这个问题吗?
【问题讨论】:
我认为你不需要用 axios 设置内容长度,它会为你做的。 好的,谢谢你告诉我。我将从代码中删除它。我只是把它放在这里,因为它需要在 PHP 上设置。 【参考方案1】:我使用来自 javascript 的 fetch() 解决了这个问题。
我使用 post 方法进行简单获取对我有用,不知道它对 Axios 不起作用。
我认为这是 Axios 的问题,我稍后会在他们的 Github 上发布消息。
【讨论】:
以上是关于使用 PHP 时发布请求有效,但是当我将 Axios 与 React 一起使用时,它会失败并出现 500 内部错误,我该如何解决?的主要内容,如果未能解决你的问题,请参考以下文章