为了账号安全,请及时绑定邮箱和手机立即绑定

axios 发送的请求被 Laravel 运行了两次

axios 发送的请求被 Laravel 运行了两次

PHP
蓝山帝景 2022-07-22 16:00:34
所以我想使用 axios 从前端向 Laravel 发送请求,它是跨源的,所以前端在localhost:3000,后端在localhost:8000/api,在 Laravel 中,我已经应用了 CORS中间件。在 axios 我已经设置了标题。axios 设置axios.defaults.baseURL = API_URLaxios.defaults.headers.common.Accept = 'application/json'axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'axios.defaults.headers.common['Access-Control-Allow-Origin'] = '*'axios 发布和删除: function create(){    return dispatch => {        return new Promise((resolve,reject)=>{            HTTP.get('/post/category/create')                .then((data)=>{                    return resolve(data.data.data)                }).catch((data)=>{                    return reject(data)                })        })    }}export function destroy(data){    return dispatch => {        return new Promise((resolve,reject)=>{            HTTP.delete(`/post/category/${data}`)                .then((data)=>{                    return resolve(data.data)                }).catch((data)=>{                    return reject(data)                })        })    }}我如何调用函数: var SubmitCategory = async (e) => {        e.preventDefault();        var formData = new FormData(e.target)        await setSubmit(true);        await props.dispatch(insert(formData))            .then(data=>{                toaster(data.message,data.status)                props.history.replace({                    pathname: `/post/category`                })            })            .catch(data=>{                toaster(data.message,"error")                setError(data)            })        await setSubmit(false)    }<form autoComplete="off" onSubmit={e=>SubmitCategory(e)}> <<--- onSubmit...////这发生在每种方法上,所以当我创建一些东西时,它会创建两条记录,当我删除一些东西时,第一个将被成功删除,而第二个不需要的请求失败(因为它已经被删除)。我的第一个想法是 axios 发送了两个请求,其中一个是OPTIONS方法,我做了一些谷歌研究,它无法关闭以及其他一些处理它的方法,仍然没有。
查看完整描述

1 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

当您使用 CORS 时,浏览器可能需要在OPTIONS请求之前发送GET请求。(如果是这样,它会在您发出GETwith XMLHttpRequestfetch/etc 时自动执行。)您需要区分OPTIONS请求和GET服务器端的请求,并且仅在您获得 时才实际执行工作GET,而不是在您获得OPTIONS之前.


旁注:Access-Control-Allow-Origin是一个响应头。您不应该告诉通过请求axios发送它(这样做不会做任何事情)。更多关于这里...


查看完整回答
反对 回复 2022-07-22
  • 1 回答
  • 0 关注
  • 129 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信