在PHP开发中,处理跨域请求时,通常需要设置适当的HTTP头信息。以下是一个通用的PHP跨域解决方案,适用于允许任意域名的跨域请求。
示例代码
<?php
// 允许的请求头
header("Access-Control-Allow-Headers: Accept, Authorization, Cache-Control, Content-Type, DNT, If-Modified-Since, Keep-Alive, Origin, User-Agent, X-Mx-ReqToken, X-Requested-With");
// 允许的请求方法
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, HEAD, OPTIONS");
// 是否允许发送Cookie
header("Access-Control-Allow-Credentials: true");
// 允许的请求来源
header("Access-Control-Allow-Origin: *");
// 自定义服务器标识头
header('X-Powered-By: WAF/2.0');
?>
代码说明
Access-Control-Allow-Headers:
- 指定允许的请求头,包括
Accept
、Authorization
、Content-Type
等。
- 指定允许的请求头,包括
Access-Control-Allow-Methods:
- 指定允许的HTTP请求方法,如
GET
、POST
、PUT
、DELETE
、HEAD
、OPTIONS
等。
- 指定允许的HTTP请求方法,如
Access-Control-Allow-Credentials:
- 设置为
true
时,表示允许携带用户凭证(如Cookie、HTTP认证及客户端SSL证书等)。
- 设置为
Access-Control-Allow-Origin:
- 指定允许访问资源的域名,
*
表示允许所有域名访问。
- 指定允许访问资源的域名,
X-Powered-By:
- 自定义的HTTP头,用于指示服务器使用的技术或框架(在此例中为
WAF/2.0
)。
- 自定义的HTTP头,用于指示服务器使用的技术或框架(在此例中为
注意事项
Access-Control-Allow-Origin: *
允许所有域名访问,如果需要限定特定域名访问,可以将*
替换为指定的域名。- 如果启用了
Access-Control-Allow-Credentials: true
,则Access-Control-Allow-Origin
不能使用通配符*
,必须指定具体的域名。