📌  相关文章
📜  php Access-Control-Allow-Origin - PHP (1)

📅  最后修改于: 2023-12-03 15:03:34.338000             🧑  作者: Mango

PHP Access-Control-Allow-Origin

当使用JavaScript从一个不同的源请求一个API时,浏览器会默认阻止这次请求。这是基于Web应用程序安全模型的一个限制。为了允许跨源请求,需要在服务器端设置一个CORS策略,其中一个关键点是Access-Control-Allow-Origin

什么是CORS

跨来源资源共享(CORS)允许Web应用程序访问不属于其来源的资源。当浏览器发现JavaScript试图从不同的域名获取数据时,它会发送一个预检请求(OPTIONS),以确保两个域名使用相同的数据协议。

Access-Control-Allow-Origin

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头部。在实现跨源共享时,要确保在服务器端进行适当的检查,以防止代码注入和其他可能的漏洞。