5

我已经建立了我们面向公众的网站,其标题为 Access-Control-Allow-Origin: *,以便我们可以使用 JSON 和 AJAX。但是,我真正想做的是将其限制在某些服务器上。请求应该只来自我们控制的少数服务器。我在不添加代码的情况下无法找到有效的东西(例如伪代码):

for each domain in myDomains
    addheader Access-Control-Allow-Origin: domain
next

是否可以在 IIS 中的 HTTP Headers 选项卡下添加多个“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: *只是为了不安全。

4

1 回答 1

9

Access-Control-Allow-Origin不,不允许使用多个标题。您只能有一个Access-Control-Allow-Origin响应标头,并且该标头只能有一个原始值或*(例如,您不能有多个以空格分隔的来源)。

Access-Control-Allow-Origin您最好的选择是读取传入的 Origin 标头,根据白名单检查其值,并且仅在允许 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.
于 2013-06-11T15:10:24.733 回答