ci 能同时绑定http和https吗,跨域问题要怎么解决?
$config['base_url'] ='//codeigniter.org.cn' ;能否这样配置。跨域问题困扰了我们很久。因为只能绑定1个域名,所以无法做专门的手机站点。
比如www.codeigniter.org.cn和m.codeigniter.org.cn,无法同时绑定一个程序,然后做PC和手机判断。
所以我们就用同一套程序,分2个站点分别绑定。但是存在跨域问题,比如手机端编辑器提交的内容,如果PC端进行审核,内容会变成一个括号。
后面我们只能删除手机端编辑器,所有内容都只能通过PC端提交。
现在又遇到一个问题,就是https部署,因为只能绑定1个域名,那么如果部署https,那么http的访问又变成跨域了。
本帖最后由 卖烧烤123 于 2018-6-13 14:06 编辑
Hex 发表于 2018-6-13 12:36
嗯,静态资源可以这样配,没问题。
是不是路由也要做配置,这种{url topic/getone/$question['id']}url还是http的
function url($var, $url = '') {
global $setting;
// exit($var);
$removeIndex=config_item('removeIndex');
$location = $removeIndex . $var . $setting ['seo_suffix'];
if ((false === strpos ( $var, 'admin_' )) && $setting ['seo_on']) {
$useragent = $_SERVER ['HTTP_USER_AGENT'];
if (! strstr ( $useragent, 'MicroMessenger' )) {
$location = $var . $setting ['seo_suffix'];
}else{
$location = 'index.php?' . $var . $setting ['seo_suffix'];
}
}
$location = urlmap ( $location, 2 );
return base_url () . $location; //程序动态获取的,给question的model使用
}
为什么url还是http
卖烧烤123 发表于 2018-6-13 12:17
比如,我在base_url配置了https://codeigniter.org.cn/
那么我使用http://codeigniter.org.cn访问网站,会 ...
这样写:
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$config['base_url'] = $protocol . 'domian.com/';
config.php 也是 php 脚本,所以这里可以写 PHP 代码来实现特殊逻辑。
另外,CORS 并不是你写的那个只是一个 http header,有一些具体规范,可以参考这里 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS 本帖最后由 卖烧烤123 于 2018-6-13 16:15 编辑
Hex 发表于 2018-6-13 15:58
你在 HTTP 域名下就会生成 http 的呀,在 https 域名下就生成 https
我知道原因了,因为缓存的缘故。
比如我第一次访问先用http访问的,那么生成的缓存文件里面的url就是http。第二次用https访问,那么调用的缓存文件没更新,就会显示http
为什么不能直接使用$config['base_url' = '//domian.com/';
我测试之后,发现觉得//domian.com/可以正常使用,没有发现异常?是不是还有我没有遇到的情况
首先要确定你到底是 base_url 的问题,还是跨域的问题,base_url 可以通过修改这个 base_url 配置解决。
跨域问题,这是前端遇到的问题,PHP 需要用 CORS 解决前端跨域问题。所以需要明确,你到底是什么问题?
本帖最后由 卖烧烤123 于 2018-6-13 12:18 编辑
Hex 发表于 2018-6-13 12:09
首先要确定你到底是 base_url 的问题,还是跨域的问题,base_url 可以通过修改这个 base_url 配置解决。
跨 ...
比如,我在base_url配置了https://codeigniter.org.cn/
那么我使用http://codeigniter.org.cn访问网站,会出现跨域问题吧
然后我在index.php配置了header('Access-Control-Allow-Origin: http://codeigniter.org.cn');,是否能解决跨域问题。
base_url能否直接配置//codeigniter.org.cn/
Hex 发表于 2018-6-13 12:22
这样写:
我试试看!
另外我在服务器配置了
location ~* \.(eot|ttf|woff|woff2|svg|otf|css|js)$ {
add_header Access-Control-Allow-Origin *;
}
卖烧烤123 发表于 2018-6-13 12:28
我试试看!
另外我在服务器配置了
嗯,静态资源可以这样配,没问题。 到底有几个站点?
www.xxx.com 和 m.xxx.com? 卖烧烤123 发表于 2018-6-13 13:35
是不是路由也要做配置,这种{url topic/getone/$question['id']}url还是http的
function url($var, $url ...
你在 HTTP 域名下就会生成 http 的呀,在 https 域名下就生成 https
页:
[1]
2