从安全角度来看,访问控制的建议值是什么允许原始标题

时间:2018-01-09 11:40:52

标签: ajax http cors

我不希望对我的域进行任何跨域调用。在这种情况下,

1) Same-Origin 标题的有效值访问Ccontrol允许来源

2)如果是,从安全角度看这个值是什么?

3)如果不是,我应该将其硬编码为 mydomain.com

2 个答案:

答案 0 :(得分:1)

如果您不想要任何跨域请求,请不要在响应中发送任何CORS响应标头 - 这很容易。

具体答案,如果您执行希望允许某些域(例如您控制的域)允许跨域请求:

1)Same-Origin是否为标题Access-Control-Allow-Origin?

的有效值

不,Access-Control-Allow-Origin(又名' ACAO')标头的唯一有效值为Access-Control-Allow-Origin: *(允许任何请求域)或Access-Control-Allow-Origin: scheme://domain[:port] 完全匹配Origin请求标头的值。基本上,你要么返回一个星号,要么只是“镜像回”' Origin请求标头的值。

2)如果是,从安全角度看这个值是什么?

如果问题是"值Access-Control-Allow-Origin: *是否安全?",答案是它完全取决于您的设置。您是否需要传递身份验证信息(Cookie,身份验证标头等)?你想做什么? "安全"这里真的不是正确的词。传递*值意味着来自任何域的请求都可以检索您的资产或调用您的API。这是一个问题吗?

3)如果不是,我应该将其硬编码到mydomain.com

如果您这样做,必须包含该方案(和端口,如果它不是80(对于HTTP)或443(对于HTTPS))。

如果有疑问,请执行此操作(伪代码):

if (Origin header matches "*.mydomain.com" or Origin header matches "*://mydomain.com") {
    addheader("Access-Control-Allow-Origin:" + [Origin header])
{

答案 1 :(得分:0)

这取决于您的应用程序架构。 假设您正在开发一个系统,其中您的Web应用程序驻留在具有不同域的不同服务器上,并且您的服务应用程序(REST API' s)驻留在具有不同域的不同服务器上。

然后仅允许相同的来源不起作用。您需要从Web应用程序进行跨域调用。

因此,根据您的项目架构,做出这些决定会有所不同。 如果您确定将访问该资源或REST API的域,那么您可以限制到所需的特定域。