提问人:Chris Walsh 提问时间:9/13/2023 更新时间:9/13/2023 访问量:15
接收消息时是否需要对源检查进行硬编码?
Does the origin check need to be hardcoded when receiving a message?
问:
我们总是被告知在信任/处理传入消息之前检查它的来源,因为任何域都可以将消息发送到任何其他域。我明白了,但是我是否必须将源与硬编码字符串进行比较,或者我可以简单地提取我的代码当前运行的域?
例如,这是示例中所说的您必须执行的操作:
function receiveMessage(event)
{
if (event.origin !== "http://YOURDOMAIN.org")
return;
// ..process message..
}
window.addEventListener("message", receiveMessage, false);
但是我不能平等地使用它吗?
// Determine origin from url (once only)
const origin = (function (w) {
var arr = w.location.href.split("/");
return arr[0] + "//" + arr[2];
})(window);
function receiveMessage(event)
{
if (event.origin !== origin)
return;
// ..process message..
}
window.addEventListener("message", receiveMessage, false);
我问的原因是,我的代码可以在几个测试/暂存和演示环境中的任何一个上运行,而不仅仅是我们的生产环境,并且每个环境都在一个单独的域中。谢谢。
答: 暂无答案
评论