javascript - AXIOS POST 的奇怪行为
问题描述
我有一个简单的功能可以在我的应用程序上进行测试:
this.$userService.getRestaurantsList(userTemp).then(
response => {
console.log(response);
console.log('FUNCIONOU');
}
);
因为我在发布这个简单的帖子时遇到了错误,并且给了我这个:
Access-Control-Allow-Headers 在预检响应中不允许请求标头字段内容类型。
这不是 CORS,我的服务器使用 CORS 配置得很好。
当我们深入了解 getRestaurantsList 方法时,我有这个:
getRestaurantsList(user) {
return axios.post(configMain.MAIN_URL + this.GET_COMPANY_RESTAURANT_LIST_URL, JSON.stringify(user));
}
我想用 AXIOS 发送像 RAW 数据这样的数据,但是如果我使用 stringify 它可以在帖子中工作,但是如果我像这样使用
getRestaurantsList(user) {
return axios.post(configMain.MAIN_URL + this.GET_COMPANY_RESTAURANT_LIST_URL, user);
}
只有 JSON 数据它给了我你上面看到的错误,并且在我的 API 中只是返回数据进行测试:
这是来自 LARAVEL API
public function getAllRestaurants2(Request $request)
{
return $this->sendResponse($request->all(), 'Restaurants retrieved successfully');
}
一些更新我正在做的事情,如果我这样发送的话:
return axios.post(configMain.MAIN_URL + this.GET_COMPANY_RESTAURANT_LIST_URL, null, {
params: {
search: user
}
});
只有这种方法不起作用:
return axios.post(configMain.MAIN_URL + this.GET_COMPANY_RESTAURANT_LIST_URL, user);
这是我的拦截器使用 STRINGFY 并且工作正常日志:
{
"url": "url",
"method": "post",
"data": "{\"loja\":\"teste\"}",
"headers": {
"Accept": "application/json, text/plain, */*",
"Content-Type": "application/x-www-form-urlencoded"
},
"transformRequest": [
null
],
"transformResponse": [
null
],
"timeout": 0,
"xsrfCookieName": "XSRF-TOKEN",
"xsrfHeaderName": "X-XSRF-TOKEN",
"maxContentLength": -1,
"maxBodyLength": -1
}
现在拦截器使用了错误的方法:
{
"url": "url",
"method": "post",
"data": "{\"id\":\"\",\"name\":\"Anderson Teste\",\"email\":\"teste@email\",\"client_restaurant_id\":11,\"company_id\":1,\"cpf\":\"\",\"phone\":\"81293932921393\",\"locations\":[],\"password\":\"123mudar\"}",
"headers": {
"Accept": "application/json, text/plain, */*",
"Content-Type": "application/json;charset=utf-8"
},
"transformRequest": [
null
],
"transformResponse": [
null
],
"timeout": 0,
"xsrfCookieName": "XSRF-TOKEN",
"xsrfHeaderName": "X-XSRF-TOKEN",
"maxContentLength": -1,
"maxBodyLength": -1
}
这是我在 CORS 包中的配置:
[
'paths' => ['project/api/*'],
'allowed_methods' => ['*'],
'allowed_origins' => ['*'],
'allowed_origins_patterns' => [],
'allowed_headers' => ['*'],
'exposed_headers' => [],
'max_age' => 0,
'supports_credentials' => false,
];
我做错了什么,像 JSON 数据格式一样发布给我错误?
解决方案
您需要使 getRestaurantsList 函数异步。试试这个代码。
getRestaurantsList(user) async {
return await axios.post(configMain.MAIN_URL + this.GET_COMPANY_RESTAURANT_LIST_URL, user);
}
推荐阅读
- java - spring boot服务启动时,向mongodb插入数据
- reactjs - 简单的 React 组件问题
- javascript - 在 HTML5 视频中突出显示播放器搜索栏
- javascript - 如何使用for循环使用拉斐尔图形绘制由小到大的矩形塔?
- python - 如何从python中的两个不同文件中删除重复的文本
- r - R - 矩阵的列数必须在 rbind 中匹配
- php - 如何在当前站点上显示 PHP 回显 HTML 内容?
- javascript - .AddEventListner 不是函数
- sql - BigQuery:按类似字符串对大型数据集进行分组
- r - 在 R 中存在重复项的情况下查找两列中的值(已编辑)