Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获错误:在React中引发了跨原点错误_Javascript_Reactjs - Fatal编程技术网

Javascript 未捕获错误:在React中引发了跨原点错误

Javascript 未捕获错误:在React中引发了跨原点错误,javascript,reactjs,Javascript,Reactjs,我试图通过以下博客实现登录功能 我想将用户令牌保存在本地存储中 一切正常,但每次我刷新页面时,都会抛出一个错误: 未捕获错误:引发了跨原点错误。没有反应 访问开发中的实际错误对象 我已经阅读了修复它清除这里的站点数据 但是,我想有一个适当的解决方案或任何替代方法来绕过它 因此,即使在本地计算机上,我也可以使用登录功能 以下是我迄今为止所尝试的: 用于检查当前用户是否已登录: const [userState, setUserState] = useState() useEffect(()

我试图通过以下博客实现登录功能

我想将用户令牌保存在本地存储中

一切正常,但每次我刷新页面时,都会抛出一个错误:

未捕获错误:引发了跨原点错误。没有反应 访问开发中的实际错误对象

我已经阅读了修复它清除这里的站点数据

但是,我想有一个适当的解决方案或任何替代方法来绕过它

因此,即使在本地计算机上,我也可以使用登录功能

以下是我迄今为止所尝试的:

用于检查当前用户是否已登录:

const [userState, setUserState] = useState()

  useEffect(() => {
    const loggedInUser = localStorage.getItem("user");

    if (loggedInUser) {
      const foundUser = JSON.parse(loggedInUser);
      console.log(foundUser);
      setUserState(foundUser);
    }
  }, []);
登录:

const [username, setUsername] = useState("");
  const [password, setPassword] = useState("");

  const handleSubmit = async e => {
    e.preventDefault();

    const user = { username, password };

    const response = await axios.post(
      "http://localhost:8000/api-token-auth/",
      user
    )

    props.setUserState(response.data)
    const loggedInUser = localStorage.getItem("user");

    if (!loggedInUser) {
      localStorage.setItem('user', response.data)
    }
  }

这是一个非常普遍的问题。它是一种安全功能,可防止站点从您处窃取敏感数据。想象一下,您正在加载,并且在您不知情的情况下,恶意尝试访问myevillhacker.com,并在您支付账单时发送您的银行信息。这是一种痛苦,但却是必要的

问题是您试图从另一个来源加载资源;例如:

  • 你上了
  • 你试着从中加载一些东西
  • ^^^你在这里“跨越原点”。对不起,兄弟,不能那样做

    通常,要解决此问题,您必须:

  • 通过启用CORS允许服务器端的跨源请求。根据您的web服务器,有一些设置允许跨源请求
  • 将数据移动到同一原点。在上面的例子中,把所有的东西都穿上

  • 还要注意的是,较新版本的Chrome会将对
    localhost
    的请求视为跨源请求,并阻止它们。

    嘿,感谢您的详细解释。但我允许服务器端的跨源请求。在我刷新页面之前,一切正常。有关此本地存储问题的更多上下文,请参阅: