我将我的MERN堆栈应用程序部署到了heroku,但是当我手动输入url路径时,路由器路径不起作用。 这是我的节点服务器:
import requests
from bs4 import BeautifulSoup
headerIstek = {
"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19041",
"Sec-Fetch-Site" : "none",
"Accept-Language" : "tr-TR,tr;q=0.9,en-US;q=0.8,en;q=0.7"
}
istekLazim = {"ref":"","display_type":"popup","loc":""}
istekLogin = requests.get("https://www.example.com/join/login-popup/", headers=headerIstek, cookies={"ud_rule_vars":""}, params=istekLazim, verify=False)
soup = BeautifulSoup(istekLogin.text, "html.parser")
print(istekLogin.request.headers)
csrfToken = soup.find("input", {"name":"csrfmiddlewaretoken"})["value"]
print(csrfToken)
这是路由器的反应:
const express = require('express');
const path = require('path');
const connectDB = require('./config/db');
const app = express();
// //connect DB
connectDB();
app.use('/api/poll', require('./routes/api/poll'));
if(process.env.NODE_ENV === 'production'){
app.use(express.static( 'client/build' ));
app.get('*', () => {
res.sendFile(path.join(__dirname, 'client', 'build', 'index.html')); //relative path
});
}
const PORT = process.env.PORT || 5000
app.listen(PORT, () => console.log(`Server started ${PORT}`));
基本上,如果我在浏览器URL中输入路径名,例如baseUrl / poll / vote,则它不起作用。仅当我输入链接时,它才会这样做。如果我通过我的应用重定向到达该路径,则它可以工作。
答案 0 :(得分:1)
Router
必须是HashRouter
的实例,而不是BrowserRouter
。
import {BrowserRouter as Router} from 'react-router';
BrowserRouter
需要在后端进行特殊配置和考虑,以处理网络请求到路由的请求,而事实上,这些请求应该由前端处理。
HashRouter
更易于使用,因为它在URL中插入了#
,有效地将所有页面请求发送到同一基本路由,而服务器无需执行任何特殊操作。