iframe嵌入了其他网站的网页,iframeSrc中有携带相关信息,但是还是被拦截到登录页。这样情况该如何解决呢?

问题:iframe嵌入了其他网站的网页,iframeSrc中有携带相关信息,但是还是被拦截到登录页。这样情况该如何解决呢

const iframeSrc = 'xxxx?token=xxx&userName=xxx';
  return (
    <div className={styles['portal_wrapper']}>
      <iframe id="portal" name="portal" src={iframeSrc} className={styles['portal_wrapper--iframe']} />
    </div>
  );
阅读 708
avatarAI BotBETA

这个问题涉及到跨域请求和同源策略。当您尝试在iframe中嵌入其他网站的网页时,可能会遇到安全限制,导致请求被拦截或登录页被显示。

要解决这个问题,您可以尝试以下几个方法:

  1. 使用反向代理:在您的服务器上设置一个反向代理,将请求转发到目标网站。这样,您的服务器和目标网站将共享相同的域,从而避免跨域问题。
  2. 设置CORS(跨来源资源共享):如果目标网站允许跨域请求,您可以尝试在您的网页中设置CORS头部,以允许跨域请求。这通常需要在服务器端进行配置。
  3. 使用JSONP:JSONP是一种通过动态脚本标签(<script>)实现跨域请求的方法。它允许您从目标网站获取数据,并在您的网页中呈现。但是,请注意,JSONP仅支持GET请求,并且可能存在安全风险。
  4. 使用浏览器插件或扩展程序:某些浏览器插件或扩展程序可以帮助您绕过跨域限制或模拟登录状态。但这并不是一个长期的解决方案,也不适用于所有情况。

在具体实现上,您可以使用以下代码样例:

// 使用反向代理的示例(Node.js)
const express = require('express');
const app = express();
app.use(express.static('public'));
app.all('/proxy/*', (req, res) => {
  const targetUrl = `http://example.com/${req.path}`; // 替换为目标网站的URL
  res.send(`<html><head><script>window.location.href="${targetUrl}";</script></head></html>`);
});
app.listen(3000, () => console.log('Server started on port 3000'));

请注意,这些方法可能不适用于所有情况,具体取决于目标网站的政策和安全设置。如果目标网站不允许跨域请求或模拟登录状态,那么您可能需要寻找其他解决方案或与目标网站的管理员进行沟通。

1 个回答

那个其他网站是你们自己开发的么。如果是第三方的网站,首先他要有一套从路由获取token然后放入cookie的逻辑,你这样的行为才会生效。
如果是你们自己开发的,你可以在路由拦截函数实现这个逻辑。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏