如何处理 Vuejs 中的"Request with GET/HEAD method cannot have body problem"?



我有一个问题,检查一些url和他们的状态码。我有一个php函数

public function checkUrl(Request $request)
{
$curl = curl_init($request->url);
curl_setopt($curl, CURLOPT_NOBODY, true);
curl_exec($curl);
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
return $code;
}

在Vue中我这样称呼它

Object.keys(this.items).forEach(key => {
let value = this.items[key];
let checkUrl = value.url + this.usersearch;  
fetch('/api/checkurl', {
method: 'GET',
headers: {
'Content-Type': 'application/json',                                                    
},
mode:'cors',
cache:'default',
body: JSON.stringify({url:checkUrl}),
})

当我检查它们时,我得到未捕获的TypeError: Failed to construct 'Request': Request with get/HEAD方法不能有body。方法POST工作得很好,但我需要用get方法检查url。是否有人知道我做错了什么,我将十分感激。

您正在发送GET请求正文中的url参数,这是HTTP协议不允许的。GET请求没有主体。将其作为URL参数发送:

Object.keys(this.items).forEach(key => {
let value = this.items[key];
let checkUrl = value.url + this.usersearch;
let query = new URLSearchParams({
url: checkUrl
});
fetch('/api/checkurl?' + query, {
method: 'GET',
mode:'cors',
cache:'default'
});
});

另外,确保您的后端路由为GET请求配置。