📅  最后修改于: 2023-12-03 15:03:34.338000             🧑  作者: Mango
当使用JavaScript从一个不同的源请求一个API时,浏览器会默认阻止这次请求。这是基于Web应用程序安全模型的一个限制。为了允许跨源请求,需要在服务器端设置一个CORS策略,其中一个关键点是Access-Control-Allow-Origin
。
跨来源资源共享(CORS)允许Web应用程序访问不属于其来源的资源。当浏览器发现JavaScript试图从不同的域名获取数据时,它会发送一个预检请求
(OPTIONS),以确保两个域名使用相同的数据协议。
Access-Control-Allow-Origin
是作为CORS策略的一部分来允许允许向一个Web应用程序发送跨域请求的源(域名)。
header("Access-Control-Allow-Origin: *");
如果想允许所有来源(包括子域名)的请求,可以使用通配符*
。但要注意,在敏感应用程序中,不要使用这个通配符,因为它允许攻击者轻易地访问你的API。
header("Access-Control-Allow-Origin: http://example.com");
可以通过手动设置Access-Control-Allow-Origin
响应标头,指定希望允许的域名。只有来自该域的请求会被允许,所有其他来源的请求都将被阻止。
$domain = $_SERVER['HTTP_ORIGIN'];
$allowed_domains = array('http://example1.com', 'http://example2.com');
if (in_array($domain, $allowed_domains)) {
header("Access-Control-Allow-Origin: $domain");
}
如果需要允许多个域名请求,可以对请求的来源进行检查并设置Access-Control-Allow-Origin
。在这个例子中,我们通过检查HTTP_ORIGIN
头来获取请求的来源,并将其与允许的域名进行比较。
CORS允许我们在不同的源之间共享数据,但在设置CORS策略时,需要明确设置Access-Control-Allow-Origin
头部。在实现跨源共享时,要确保在服务器端进行适当的检查,以防止代码注入和其他可能的漏洞。