织梦CMS - 轻松建站从此开始!

沙龙国际_沙龙国际亚洲第一品牌网上娱乐

当前位置: 主页 > 沙龙国际 >

前后端分离中碰到跨域问题大家是怎么解决的?

时间:2017-07-17 16:23来源:未知 作者:admin 点击:
目前我在我的博客的时候,考虑到使用前后端分离,将前端和后端逻辑单独放在两个版本库,部署在两台服务器上。 我的主域名为: godtail.cn (目前使用 ghost ,新的博客正在写...) 前端

目前我在我的博客的时候,考虑到使用前后端分离,将前端和后端逻辑单独放在两个版本库,部署在两台服务器上。

我的主域名为: godtail.cn(目前使用ghost,新的博客正在写...)

  • 前端域名为: www.godtail.cn | godtail.cn | m.godtail.cn

  • 后端域名为: api.godtail.cn

但是在通信的时候发现,提示跨域了,好吧,我之前以为在主域名相同情况下不会跨域(同域名不同端口也会跨域)。

目前我知道的可以解决的方法有两种:

  1. 使用JSONP,说实在我不是特别喜欢使用JSONP,感觉会导致安全问题,或者效率下降(这两点仅是我的猜测)。
    猜测的理由:

    • 任何来源都能访问, 会不会存在js注入?

    • 后端和前端需要都JSONP进行处理。(写起来不爽,而且是所有请求都要使用JSONP)。

  2. 在后端添加跨域头

    • 如果前端域名比较多,需要添加很多域名,需要维护。如果别的系统需要请求你的接口,添加进跨域头?不好处理...

大家有没有更好一点的解决方法?

================【 9-22 17:25 】======================

补充下,设置跨域头,可以设置ip,仅供自己内部调用还是可以的。如果需要外部调用的话,就满足不了,另外不确定有没有老版本浏览器兼容问题。

=============== 【 9-29 17:39 】======================

补充下,后面碰到的问题吧,之前直接使用跨域头是可以正常GET和常规POST(表单方式)的,但是PUTDELETE,和Content-Type为application/json等, 需要再进行其他设置(预处理)。

具体MDN的CORS的文档看这里

代码, PHP为例:

header("Access-Control-Allow-Origin: xxx.com"); //允许的来源
//OPTIONS通过后,保存的时间,如果不超过这个时间,是不会再次发起OPTIONS请求的。
header("Access-Control-Max-Age: 86400"); 
//另外如果是OPTIONS头的话,需要返回200(通过验证)
header("Access-Control-Allow-Headers: Content-Type");
//允许的请求方式
header("Access-Control-Allow-Methods: OPTIONS, GET, PUT, POST, DELETE");

不想折腾的,直接反向代理到 xxx.com/api 下吧, 不会产生跨域问题,但是url不太美观就是。

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容