| |
前后端分离项目中前端ajax发起请求,后端接受请求并处理,如果发起请求的前端所在域和处理请求的后端不在同一个域内,那么就会产生跨域的问题 只有当
protocol(协议)、domain(域名)、port(端口)三者一致。
才是同源。
本文通过设置Access-Control-Allow-Origin来实现跨域。
例如:客户端的域名是t-acg.com,而请求的域名是t-acg.com:3000。
如果直接使用ajax访问,会有以下错误:
XMLHttpRequest cannot load http://t-acg.com:3000/server.php . No 'Access-Control-Allow-Origin' header is present on the requested resource.Origin 'http://t-acg.com' is therefore not allowed access.
指定某域名(http://t-acg.com
)跨域访问,则只需在http://t-acg.com:3000/server.php
文件头部添加如下代码:
header('Access-Control-Allow-Origin: http://t-acg.com');
指定多个域名(http://c1.t-acg1.com
、http://c2.t-acg.com
等)跨域访问,则只需在http://t-acg.com:3000/server.php
文件头部添加如下代码:
$origin = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : '';
$allow_origin = array(
'http://c1.t-acg.com',
'http://c2.t-acg.com'
);
if(in_array($origin, $allow_origin)){
header('Access-Control-Allow-Origin: '.$origin);
}
允许所有域名访问则只需在http://t-acg.com:3000/server.php
文件头部添加如下代码:
header('Access-Control-Allow-Origin: *');
请注意,以上代码中的域名c1.t-acg1.com
和c2.t-acg.com
是示例域名,您需要根据实际情况替换为您自己的域名。同时,确保您的服务器配置允许跨域请求,并且这些代码被正确地放置在PHP文件的头部。
系列课程并未全部上架,处于先行测试阶段