我已经设置了面向公众的网站,标题为Access-Control-Allow-Origin:*,以便我们可以使用JSON和AJAX。但是,我真正想要做的是将其限制为仅限于某些服务器。请求应该只来自我们控制的几台服务器。我无法在不添加代码的情况下找到有用的东西(例如伪代码):
for each domain in myDomains
addheader Access-Control-Allow-Origin: domain
next
是否可以在HTTP标头选项卡下的IIS中添加多个“Access-Control-Allow-Origin”?我知道可以将它实际添加到IIS,但是它有用吗?
实施例
Access-Control-Allow-Origin: http://domain1
Access-Control-Allow-Origin: http://domain2
Access-Control-Allow-Origin: http://127.0.0.1 (use using home as IP example)
使用 Access-Control-Allow-Origin:* 只是为了不安全。
答案 0 :(得分:9)
不,不允许使用多个Access-Control-Allow-Origin
标头。您只能有一个Access-Control-Allow-Origin
响应标头,并且该标头只能有一个原始值或*
(例如,您不能有多个以空格分隔的原点)。
您最好的选择是读取传入的Origin标头,针对白名单检查其值,如果允许Origin,则仅发出Access-Control-Allow-Origin
标头。这是伪代码中的一个例子:
origin = request.getHeader('Origin');
for each domain in myDomains
if (domain == origin)
// Add header if the origin is whitelisted
addheader Access-Control-Allow-Origin: domain
return
// Otherwise exit the for loop without adding any headers.