javascript - 下一个js中的HTTPS重定向

标签 javascript reactjs redirect https next.js

我正在尝试使用 next 将 http 重定向到 https, 所以如果用户在 http://www.example.com 进入网站重定向到 https://www.example.com 我在服务器端使用 GraphQL Yoga,所以不确定如何在服务器端的索引文件中完成此操作。 我试过使用元标记并更改窗口对象中的协议(protocol),但在服务器端渲染中没有成功。 有什么方法可以在客户端使用 next js 或在服务器端完成此重定向?

const cookieParser = require('cookie-parser')
const jwt = require('jsonwebtoken')
require('dotenv').config({path: '.env'})
const createServer = require('./createServer')
const db = require('./db')
const sslRedirect = require('heroku-ssl-redirect');
const server = createServer()
//Express middleware to handle cookies
server.express.use(cookieParser())
//decode JWT 
server.express.use((req, res, next) => {
    const { token } = req.cookies;
    if (token) {
      const { userId } = jwt.verify(token, process.env.APP_SECRET);
      req.userId = userId;
    }
    next()
})
//Populates user on request
server.express.use(async (req, res, next) => {
  if(!req.userId) return next()
  const user = await db.query.user({
    where: {id: req.userId}
  }, `{id, permissions, email, name}`)
  req.user = user
  next()
})
//start
server.start({
     cors: {
        credentials: true,
       origin: process.env.FRONTEND_URL
    },
}, starting => {
    console.log(`server is running on port ${starting.port}`)
})

最佳答案

我过去所做的是使用 express 启动 HTTP 和 HTTPS 服务器。 HTTPS 是配置了所有路由\API 的服务器。 HTTP 服务器只是将所有 GET 请求重定向到 HTTPS。请参阅以下代码,可用于设置 HTTP 服务器以执行重定向。

let httpRedirectServer = express();

// set up a route to redirect http to https
httpRedirectServer.get('*', (request, response) => {
    response.redirect('https://' + request.headers.host + request.url);
});

httpRedirectServer.listen(80);
httpRedirectServer.on('listening', () => {
    console.log("Listening to redirect http to https");
});

或者在客户端,一个快速修复是通过运行类似的东西在 javascript 中重定向。

// Check the URL starts with 'http://xxxxx' protocol, if it does then redirect to 'https://xxxxx' url of same resource
var httpTokens = /^http:\/\/(.*)$/.exec(window.location.href);
if(httpTokens) { 
    window.location.replace('https://' + httpTokens[1]);
}

关于javascript - 下一个js中的HTTPS重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56031496/

相关文章:

javascript - 拆分空白帮助

JavaScript 添加到书签在 FF >= 23.0 中不起作用

javascript - onClick 事件处理程序在加载时调用,而不是在单击时调用

reactjs - 使用 'fields' 钩子(Hook)时,有没有办法通过 React DevTools 在 React 多重状态下查看 'useState' 的名称

javascript - 如何重定向到主页

ruby-on-rails - 如果已经登录的用户尝试再次注册,则自定义 Devise 重定向

javascript - 如何通过 jssdk 获取 facebook 用户名?

javascript - 过滤react-multi-select时如何调用服务器

grails - 如何从Grails应用程序中的gsp重定向到 Controller 的 Action

javascript - JQuery/ASP.NET 的挫败感