最近在写公司项目的时候发现一个跨域的问题 也困扰了我很久一直以为是接口问题 最后才想到跨域 关于跨域怎么解决的?
如tp3.2
header('Access-Control-Allow-Origin:*'); // 所有地址都允许跨域请求
$allow_origin
=
array
( //指定的地址可以允许跨域请求
'xxxxx'
,
'xxxx'
,
)
;
$origin = isset($_SERVER['HTTP_ORIGIN'])? $_SERVER['HTTP_ORIGIN'] : ''; if(in_array($origin, $allow_origin)){ header('Access-Control-Allow-Origin:'.$origin); header("Access-Control-Allow-Headers: Origin, X-Requested-With, authorization,Content-Type, Accept"); } header('Access-Control-Allow-Credentials: true'); // +---------------------------------------------------------------------- // | ThinkPHP [ WE CAN DO IT JUST THINK ] // +---------------------------------------------------------------------- // | Copyright (c) 2006-2014 http://thinkphp.cn All rights reserved. // +---------------------------------------------------------------------- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) // +---------------------------------------------------------------------- // | Author: liu21st <liu21st@gmail.com> // +---------------------------------------------------------------------- // 应用入口文件 // 检测PHP环境 if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !'); // 开启调试模式 建议开发阶段开启 部署阶段注释或者设为false define('APP_DEBUG',true); // 定义应用目录 define('APP_PATH','./Application/'); // 定义根目录 define( 'ROOT_PATH', dirname(__FILE__).'/' ); // 引入ThinkPHP入口文件 require './ThinkPHP/ThinkPHP.php';
如果js自定义header头则加上这段:
response.header('Access_Control_Allow_Headers',"X-requested-with,content-type"); response.header('Access_Control_Allow_Headers',"PUT,POST,GET,OPTIONS,DELETE");
这段代码是在tp3.2 的入口index.php 写的这样就解决了跨域的问题 不需要到每个页面去写跨域的代码 这样写一次就ok
同理 其他框架只要在入口加上这样的代码就可以解决您使用框架的跨域问题