跨源请求共享 (CORS) 是一种机制,允许浏览器可以安全地发出跨域 HTTP 请求,从而实现不同域或子域之间的通信。此机制有助于防止未经授权的资源访问,确保数据隐私和安全。
为了演示 CORS 流程,让我们考虑一个简化的 PHP 脚本:
header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Headers: *");
此脚本允许来自任何来源和任何标头的跨源请求。但是,在某些情况下,您可能会遇到如下错误消息:
Request header field X-Requested-With is not allowed by Access-Control-Allow-Headers
要正确处理 CORS 请求,您需要显式指定允许的标头。正确响应 CORS 请求的更全面的函数是:
function cors() { if (isset($_SERVER['HTTP_ORIGIN'])) { header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}"); header('Access-Control-Allow-Credentials: true'); header('Access-Control-Max-Age: 86400'); } if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') { if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'])) { header("Access-Control-Allow-Methods: GET, POST, OPTIONS"); } if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])) { header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}"); } exit(0); } echo "You have CORS!"; }
1.验证 HTTP_ORIGIN:
当您收到 HTTP_ORIGIN 标头时,请务必在允许请求之前将其与已批准来源的白名单进行检查。
2. X-Requested-With 验证:
上面的脚本允许任何标头,包括 X-Requested-With。这也应该得到验证,尤其是在生产环境中。
3.阅读 CORS 规范:
要全面了解 CORS,请参考官方规范:
以上是如何在 PHP 中正确配置 CORS 标头以避免跨域请求错误?的详细内容。更多信息请关注PHP中文网其他相关文章!