我不希望对我的域进行任何跨域调用。在这种情况下,
1) Same-Origin 标题的有效值访问Ccontrol允许来源?
2)如果是,从安全角度看这个值是什么?
3)如果不是,我应该将其硬编码为 mydomain.com
答案 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的域,那么您可以限制到所需的特定域。