我正在尝试允许某个特定域名通过iframe访问我的网站
Header set X-Frame-Options ALLOW-FROM https://www.that-site.com
我知道这可以通过将上面的行添加到Apache服务器的配置来完成。
这里有两个问题。
1)应该添加哪个配置文件? apache在Unix和windows上运行,如果不是同一个文件
2)在启用all-from时,我仍然希望能够从我自己的域运行一些iframe。我可以在allow-from之后添加以下行吗?
Header set X-Frame-Options SAMEORIGIN
或者我应该在all-from中添加我自己的域名,即
Header set X-Frame-Options ALLOW-FROM https://www.that-site.com, http://www.my-own-domain.com
真的需要解决这个问题。提前致谢
答案 0 :(得分:30)
.htaccess
,httpd.conf
或VirtualHost
部分Header set X-Frame-Options SAMEORIGIN
这是最佳选择 Allow from URI
。参考:X-Frame-Options on MDN
答案 1 :(得分:21)
请参阅X-Frame-Options header on error response
您只需将以下行添加到.htaccess
即可Header always unset X-Frame-Options
答案 2 :(得分:1)
这适用于所有浏览器:
答案 3 :(得分:1)
我发现如果httpd服务器中的应用程序有一个类似&#34的规则;如果X-Frame-Options标头存在且有值,请不要管它;否则添加标题X-Frame-Options:SAMEORIGIN"那么一个httpd.conf mod_headers规则就像" Header总是取消设置X-Frame-Options"不够。 SAMEORIGIN值始终会到达客户端。
为了解决这个问题,我添加了两个而不是一个mod_headers规则(在最外面的httpd.conf文件中):
Header set X-Frame-Options ALLOW-FROM http://to.be.deleted.com early
Header unset X-Frame-Options
第一条规则告诉任何内部请求处理程序,其他一些代理负责防止点击劫持,它可以跳过它拯救世界的企图。它早在"早期"处理。第二个规则剥离了完全不需要的X-Frame-Options标头。它与#34;晚期"处理
我还添加了适当的Content-Security-Policy标头,以便世界保持受保护,但来自可信站点的多源Javascript仍然可以运行。
答案 4 :(得分:1)
以下是对我的作用:我在http IInputDeviceEnumerator newEnum = (IInputDeviceEnumerator)FormatterServices.GetUninitializedObject(type);
if (newEnum is IIMConfigurable typeSettings)
{
string pluginDirectory = Path.GetDirectoryName(new System.Uri(typeSettings.GetType().Assembly.CodeBase).AbsolutePath);
string pluginConfigPath = Path.Combine(pluginDirectory, "settings.json");
if (File.Exists(pluginConfigPath))
{
try
{
JsonConvert.PopulateObject(File.ReadAllText(pluginConfigPath), typeSettings.config);
}
catch { }
}
SharedProperties.Settings.pluginSettings.settingsGroups.Add(typeSettings.config);
}
var constructor = type.GetConstructor(Type.EmptyTypes);
constructor.Invoke(newEnum, null);
和https PopulateObjectMembers
虚拟主机块中添加了以下指令:
template = '''
<html>
<div>
Hello world
</div>
</html>
'''
这背后的原因?好吧,默认情况下,如果已设置,则服务器不会重置import os
from sendgrid import SendGridAPIClient
template = '''
<html>
<div>
Hello world
</div>
</html>
message = {
'personalizations': [
{
'to': [
{
'email': 'test@example.com'
}
],
'subject': 'Sending with Twilio SendGrid is Fun'
}
],
'from': {
'email': 'test@example.com'
},
'content': [
{
'type': 'text/plain',
'value': template
}
]
}
try:
sg = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY'))
response = sg.send(message)
print(response.status_code)
print(response.body)
print(response.headers)
except Exception as e:
print(str(e))
头,因此我们首先需要始终删除默认值,在我的情况下为<VirtualHost *:80>
,然后使用下一条规则将其设置为理想值,在我的情况下为<VirtualHost *:443>
。当然,您也可以使用ServerName your-app.com
ServerAlias www.your-app.com
Header always unset X-Frame-Options
Header set X-Frame-Options "SAMEORIGIN"
规则。