NextJS:14.2.1 下一个验证:4.24.7 直接:10.10.5
我想在一个简单的表单中更新当前用户的详细信息。我正在使用 Directus 提供的 updateMe 函数。提交表格时我收到错误:
我也使用他们的 SDK 功能进行登录和注册,这些功能运行良好。
我的handleSubmit函数(我在返回之前显示该函数,因为在返回中仅遵循一个触发handleInputChange的简单形式:
'use client'
import { useRouter } from "next/navigation";
import { useState } from "react"
import { createDirectus, rest, updateMe } from '@directus/sdk';
export default function ProfilEdit({ userContent, userId }) {
const router = useRouter();
const [loading, setLoading] = useState(false);
const [formData, setFormData] = useState({
first_name: "",
last_name: "",
email: "",
});
const [error, setError] = useState("");
const client = createDirectus('*****MYDIRECTUSURL').with(rest());
const handleInputChange = (e) => {
setFormData({
...formData,
[e.target.name]: e.target.value,
});
};
const handleFormSubmit = async (e) => {
e.preventDefault();
setLoading(true);
try {
const response = await client.request(updateMe({
first_name: formData.first_name,
last_name: formData.last_name,
email: formData.email,
}));
if (response.data) {
router.push('/dashboard');
} else {
setError('Fehler beim Aktualisieren des Benutzers');
}
} catch (error) {
setError('Fehler beim Aktualisieren des Benutzers');
console.log(error);
}
setLoading(false);
};
首先我认为问题可能是请求来自不安全的本地主机,但我部署了它并遇到了同样的问题。我也尝试只处理 PATCH 请求,但这效果不佳。我还设置了所有用户角色的所有权限以允许一切(仅用于测试)
再次:使用 SDK 登录和注册正在运行...
我尝试用 Postman 做这个补丁并且它有效,但是为什么?
我找到了解决方案:
问题出在 Directus API 的 CORS 设置上。
您需要将其添加到 Directus 配置中:
ORS_ENABLED: "true"
CORS_ORIGIN: "true"