访问控制允许原点限制

Sta*_* Jr 5 asp.net iis-6 http-headers cors

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

for each domain in myDomains
    addheader Access-Control-Allow-Origin: domain
next
Run Code Online (Sandbox Code Playgroud)

是否可以在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)
Run Code Online (Sandbox Code Playgroud)

使用Access-Control-Allow-Origin:*只是为了不安全.

mon*_*sur 9

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

您最好的选择是读取传入的Origin标头,针对白名单检查其值,并且仅在Access-Control-Allow-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.
Run Code Online (Sandbox Code Playgroud)