在Django中,我的登录URL设置为"api/auth/login"。当给定用户名和密码时,它会将该用户登录。运行"python manage.py runserver",它会把该URL放在"http://127.0.0.1:8000/api/auth/login'
然而,我的React项目,当运行"纱线启动"时http://localhost:3000/'并为其提供扩展名"api/auth/login",它尝试的url为'http://localhost:3000/api/auth/login"。
这不起作用,但如果我将URL扩展名替换为http://127.0.0.1:8000/api/auth/login',登录正常工作。
如何让URL与我的React应用程序配合使用?或者这不是必须要解决的问题吗?我确实计划在某个地方主持这个项目,但还不确定URL会如何运作。。
package.json
中设置proxy
。
第二个选项是设置axois
baseURL
:
// add in your code before main component definition
// for example in App.js
import axios from "axios";
axios.defaults.baseURL = "http://127.0.0.1:8000";
我更喜欢第二种方法。对于进行生产构建,可以很容易地用环境变量覆盖它。
import axios from "axios";
axios.defaults.baseURL = REACT_APP_SERVER_URL
记住在Django服务器中设置CORS头(我正在编写教程,其中有一个如何做到这一点的示例(。
您正在另一个端口上托管react应用程序,这就是为什么当您在不提及主机的情况下提出请求时,它会附加到您当前的主机上,即127.0.0.1:3000。我建议你写";代理":"127.0.0.1:8000'(请参阅https://create-react-app.dev/docs/proxying-api-requests-in-development/)并重新启动您的react服务器或使用django服务器的完整url,即127.0.0.1:8000/