📅  最后修改于: 2023-12-03 15:33:37.695000             🧑  作者: Mango
当在使用 AJAX 或 Fetch API 跨源请求时,会出现 CORS(跨域资源共享)安全限制,阻止跨源请求访问资源。在 PHP 中,对于 CORS,我们需要在服务器端进行一些配置和设置。
CORS 是一种浏览器安全机制,保护了用户隐私和数据安全。它允许网页客户端跨源(协议、域名或端口)请求服务器资源,如果没有相应的 CORS 规则,则会在浏览器上阻止该请求。
当浏览器发送跨源请求时,服务器会返回以下响应头的其中之一:
如果没有设置这些响应头,浏览器将无法处理跨源请求的响应,并抛出一个跨域资源共享错误。
在 PHP 中,我们可以使用 header()
函数来在返回响应头中添加 CORS 指令。下面是一个例子:
header('Access-Control-Allow-Origin: https://safe-site.com');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
header('Access-Control-Allow-Headers: X-Requested-With, Content-Type, Authorization');
在 header()
函数中,使用 Access-Control-Allow-Origin
指令指定允许的站点域名。从安全角度考虑,我们应该明确声明可以访问资源的站点,而不是使用通配符 *
,因为这会允许任何站点跨域访问资源。
使用 Access-Control-Allow-Methods
指令指定支持的 HTTP 方法,例如 GET、POST、PUT 或 DELETE。如果服务器只支持特定的方法,则必须在此指令中声明,并在请求中使用相应的方法。
使用 Access-Control-Allow-Headers
指令来允许客户端使用指定的自定义头,例如 X-Requested-With
、Content-Type
或 Authorization
。如果客户端使用了未被允许的头,则该请求将失败。
CORS 是一种浏览器安全机制,它可以防止跨站点请求资源。在 PHP 中,我们需要在响应头中添加一些 CORS 指令,以允许客户端跨域访问资源。使用 header()
函数添加 Access-Control-Allow-Origin
、Access-Control-Allow-Methods
和 Access-Control-Allow-Headers
指令可以帮助我们制定 CORS 策略。
注:如果你的 PHP 程序返回的是 JSON 格式数据,可以使用 PHP 函数 header('Content-Type: application/json')
来指定响应内容类型,这样客户端请求时就会按照 JSON 格式解析响应数据。