搜索
系统检测到您的用户名不符合规范:

解决前后端的跨域问题

浏览:8037 发布日期:2018年07月18日 分类:技术分享 关键字: 跨越 前后端分离
如果只是简单跨域的话
直接在后端加上header("Allow-Control-Allow-Origin:允许跨域的域名(实际开发中不建议使用*)")如果需要前后端跨域session共享
那么前端的请求应该加上
xhrFields:{
withCreadentials:true
}$.ajax({
url:url,
<! -- 加上此部分 Start-- >
xhrFields: {
withCredentials: true
},
crossDomain: true,
<! -- 加上此部分 End-- >
success:function() {
},
error:function() {
}
});
后端应该加上header("Access-Control-Allow-Credentials:true");
header("Access-Control-Allow-Origin:http://mymyjd.cn");//注意修改这里填写你的前端的域名
header("Access-Control-Max-Age:3600");
header("Access-Control-Allow-Headers:DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,SessionToken");
header('Access-Control-Allow-Methods: GET, POST, PUT,DELETE');
但是仅仅这样只能实现简单请求的跨域,对于复杂请求如put Delete 请求还没有找到最优的解决方法

备注如果使用think PHP5.1框架的话,就不用自己写header
并且复杂请求的问题得到解决
解决方法如下
使用路由

如果某个路由或者分组需要支持跨域请求,可以使用Route::get('new/:id', 'News/read')
->ext('html')
->allowCrossDomain();
跨域请求一般会发送一条 OPTIONS 的请求,一旦设置了跨域请求的话,不需要自己定义 OPTIONS
请求的路由,系统会自动加上。
跨域请求系统会默认带上一些Header,包括:Access-Control-Allow-Origin:*
Access-Control-Allow-Methods:GET, POST, PATCH, PUT, DELETE
Access-Control-Allow-Headers:Authorization, Content-Type, If-Match, If-Modified-Sinc
e, If-None-Match, If-Unmodified-Since, X-Requested-With
你可以添加或者更改Header信息,使用Route::get('new/:id', 'News/read')
->ext('html')
->header('Access-Control-Allow-Origin','thinkphp.cn')
->header('Access-Control-Allow-Credentials', 'true')
->allowCrossDomain();
最佳答案
评论() 相关
后面还有条评论,
评论支持使用[code][/code]标签添加代码
您需要登录后才可以评论 登录 | 立即注册
收藏
zhuhanxin0308
积分:683 等级:LV2
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /