gpt4 book ai didi

html - Angular 中的动态 CSP(内容安全策略)connect-src

转载 作者:行者123 更新时间:2023-12-04 13:17:05 26 4
gpt4 key购买 nike

我在我的 Angulars 项目 index.html 中的元标记中定义了 CSP文件

  <meta http-equiv="Content-Security-Policy"
content="default-src 'self';
connect-src 'self' https://baseurl1/ https://baseurl2/ https://baseurl3/;
img-src 'self' data: http://baseurl/;
frame-src 'self' blob:;
media-src 'self' https://baseurl/;
script-src 'self' 'unsafe-inline' 'unsafe-eval' http://baseurl/;
style-src 'self' 'unsafe-inline';">

我的问题是,我想再添加一个白名单 connect-src动态地基于应用程序中的用户选择。自 index.html 以来如何做到这一点是静态页面吗?

该 url 是从 http 服务调用的,该服务可访问标准服务器接口(interface)(不同的提供者)。用户可以选择他的提供者,因此 url 会发生变化。没有已知的一组可能的 url。如果我能以某种方式 CSP 忽略此服务发送的所有请求,那也很好。

最佳答案

您可以尝试使用 Meta 组件动态更新 CSP。

如下所示,可能对您有所帮助。

import { Meta } from '@angular/platform-browser';

let i = 0;
let tim = setInterval(() => {

let tag = this.meta.getTag('http-equiv=Content-Security-Policy');

if (tag) {

this.meta.removeTag('http-equiv=Content-Security-Policy');
let content = tag.getAttribute('content');
let str = 'connect-src ';
let index = content.indexOf(str);
content = content.slice(0, index + str.length) + "https://baseurl22/ https://baseurl23/ https://baseurl34/ " + content.slice(index + str.length);
this.meta.updateTag({ 'http-equiv': 'Content-Security-Policy', content: content });
} else {

this.meta.addTag({ 'http-equiv': 'Content-Security-Policy', content: 'connect-src \'self\' https://baseurl1/ https://baseurl2/ https://baseurl3/;' });
}

if (i == 1) clearInterval(tim);
i++;
}, 1000);

演示 - https://stackblitz.com/edit/angular-teecck

关于html - Angular 中的动态 CSP(内容安全策略)connect-src,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59353603/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com