大佬们,想问下 iframe 标签如何在请求头携带 token 啊?

2022-11-14 09:29:00 +08:00
 OkabeRintaro

iframe 标签的 src,那个 url 链接的请求需要 token 有办法在里面携带 token 吗?
场景:现在有一个客服弹窗,这个弹窗是 iframe 标签根据 src 内嵌的。
问题:我登录了,我点击客服,弹窗出现,但是会报 未登录(因为发送请求并未携带 token )
想法:既然没有 token ,那我给它加上 token 不就好了吗?
难点:不知道通过什么方法给 iframe 标签的 src 链接,放上一个 token 带过去。。。。 对了,不要参数拼接。。。。。
大佬们,有办法解决吗?

2453 次点击
所在节点    程序员
10 条回复
lazyfighter
2022-11-14 09:45:03 +08:00
先说明需要怎么携带,cookie 同一个域里面应该能携带呀
OkabeRintaro
2022-11-14 09:47:42 +08:00
@lazyfighter 像请求拦截器一样在 headers 里面携带
config.headers["Token"] = localStorage.getItem("token");
config.headers["Accept"] = "*/*";
lynan
2022-11-14 09:55:18 +08:00
首先要确定一件事:未登录错误是否是 iframe src 的 DOC 请求返回的?
如果是:我不懂,留给楼下
如果不是:你应该从 iframe 客服应用如何设置 token 的环节上去解决你的问题
libook
2022-11-14 09:56:46 +08:00
1. 打开 Google ;
2. 搜索关键词“set header for iframe src”;
3. 点击第一条结果“Is it possible to add Request Headers to an iframe src request?”;
4. 滚动到高赞答案,表示使用 JS 带 Header 请求目标地址,然后使用 URL.createObjectURL()生成 ObjectURL 赋给 iframe ;
5. MDN 上搜索 URL.createObjectURL()阅读文档。
DICK23
2022-11-14 09:57:56 +08:00
通过 postmessage 传递数据?
NjcyNzMzNDQ3
2022-11-14 10:17:49 +08:00
我猜楼主在本地调试 iframe 跨域了,线上环境没有·未登录·问题。
OkabeRintaro
2022-11-14 10:32:18 +08:00
@libook 3Q 这就去看
Envov
2022-11-14 10:56:34 +08:00
@libook 经典
OkabeRintaro
2022-11-14 11:06:56 +08:00
<template>
<div>
<iframe id="iframe" src="" style="width: 500px; height: 500px" />
</div>
</template>

<script>
export default {
created() {
setTimeout(() => {
var iframe = document.querySelector("#iframe");
this.populateIframe(iframe, [["Token", localStorage.getItem("token")]]);
}, 0);
},
methods: {
populateIframe(iframe, headers) {
var xhr = new XMLHttpRequest();
xhr.open("GET", "api/home.chat/chat?type=1");
xhr.responseType = "blob";
headers.forEach((header) => {
xhr.setRequestHeader(header[0], header[1]);
});
xhr.onreadystatechange = () => {
if (xhr.readyState === xhr.DONE) {
console.log(xhr.response);
if (xhr.status === 200) {
iframe.src = URL.createObjectURL(xhr.response);
}
}
};
xhr.send();
},
},
};
</script>

<style></style>
OkabeRintaro
2022-11-14 11:40:14 +08:00
现在能成功连接到客服了,但是样式,图片的全部失效了,因为里面用的是相对地址,我也不知道为啥会没有样式,图片,所以决定不采用 heards 携带 token 了,直接 URL 拼接 token 试下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/895006

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX