微信授权域名允许子域名,前后端分离nginx做子域名静态页面映射,解决nginx跨域以及ajax跨域
2017-09-01 16:10
806 查看
因公司需求,前后端需彻底分离,由nginx映射静态页面,另外设置节点访问接口。本来微信授权域是做在接口上的,现在多出h5静态页面的域名,网上教程允许子域名授权大多都是配置在授权回调域名下的页面多做了一次跳转,拿到code之后再跳转到其他域名下的页面,但是这样会牺牲用户体验实现子域名授权。
经过公司技术顾问指导,得到一个更好的办法解决子域名授权问题,用户访问接口授权,授权成功后生成加密token,将token保存至服务器,同时保存从微信授权得到的用户信息,再将token写进cookie之中,子域名之间共享cookie,跳转到的子域名将cookie传回服务器,服务器判断该token是否有效,有效则返回用户信息。用户则不需要再次授权。
Nginx映射静态文件坑了很长时间,本来的思路是通过
用location 匹配访问的地址进行页面返回,但是location之中的root灰将匹配到的location➕root作为路径,进行资源的返回。但是前端不肯所有页面都使用同一地址访问。
后来使用alias解决
注意我的alias 后面的html有➕/
这也是个坑,root中的路径最后可以加/也可以不加/,都可以找得到地址,但是alias中的路径必须要加/,加/,加/
但是当输入的路径更为复杂的时候就变成了404,nginx的location的取反的正则我是一直都没弄出来,最后通过一条配置解决了需求。
通过try_files配置所有的uri都取请求index.html 的文件,这是我们老板研究出来的。
走完这个静态文件的坑就开始走跨域的坑
http://gamefu.github.io/2016/04/14/nginx-https-and-cors/
就不多说了,都走完之后,开始访问的时候发现直接请求接口的时候的cookie是带着的,但是当通过h5的域名去访问接口的时候cookie就一直没出现在header中,最后通过http://blog.csdn.net/wzl002/article/details/51441704
这个帖子的启发修改了ajax的跨域带cookie的功能。一切正常
经过公司技术顾问指导,得到一个更好的办法解决子域名授权问题,用户访问接口授权,授权成功后生成加密token,将token保存至服务器,同时保存从微信授权得到的用户信息,再将token写进cookie之中,子域名之间共享cookie,跳转到的子域名将cookie传回服务器,服务器判断该token是否有效,有效则返回用户信息。用户则不需要再次授权。
Nginx映射静态文件坑了很长时间,本来的思路是通过
location / { root html; index index.html index.htm; }
用location 匹配访问的地址进行页面返回,但是location之中的root灰将匹配到的location➕root作为路径,进行资源的返回。但是前端不肯所有页面都使用同一地址访问。
后来使用alias解决
location / { alias /html/; index index.html index.htm; }
注意我的alias 后面的html有➕/
这也是个坑,root中的路径最后可以加/也可以不加/,都可以找得到地址,但是alias中的路径必须要加/,加/,加/
但是当输入的路径更为复杂的时候就变成了404,nginx的location的取反的正则我是一直都没弄出来,最后通过一条配置解决了需求。
location / { try_files $uri $uri/ /index.html; }
通过try_files配置所有的uri都取请求index.html 的文件,这是我们老板研究出来的。
走完这个静态文件的坑就开始走跨域的坑
http://gamefu.github.io/2016/04/14/nginx-https-and-cors/
就不多说了,都走完之后,开始访问的时候发现直接请求接口的时候的cookie是带着的,但是当通过h5的域名去访问接口的时候cookie就一直没出现在header中,最后通过http://blog.csdn.net/wzl002/article/details/51441704
这个帖子的启发修改了ajax的跨域带cookie的功能。一切正常
相关文章推荐
- 前后端分离nginx配置,同时解决跨域问题
- nginx配置反向代理解决前后端分离跨域问题
- nginx配置反向代理解决前后端分离跨域问题
- phantomJS+nodeJS+nginx完美解决前后端分离SEO问题
- 解决微信授权回调页面域名只能设置一个的问题
- 解决微信网页授权只能设置一个回调域名的问题
- java 浅析跨域问题以及如何使用Cors解决前后端分离部署项目所遇到的跨域问题
- 解决微信授权回调页面域名只能设置一个的问题
- nginx动静态分离以及配置https(安全组强行切换以及导致的问题解决)
- 解决微信OAuth2.0网页授权回调域名只能设置一个的问题
- 微信登录失败——授权回调域名校验出错,错误码:10003原因及解决办法
- 解决微信多域名授权微信网页授权订阅号借用授权无公众号代授权
- 解决微信授权回调页面域名只能设置一个的问题 [php]
- 解决微信OAuth2.0网页授权只能设置一个回调域名的问题
- 前后端分离:利用nginx的rewrite解决跨域问题
- 微信授权登录-前后端分离
- 详解Vue微信授权登录前后端分离较为优雅的解决方案
- 前后端分离,nginx配置解决js、css无法加载
- 解决微信OAuth2.0网页授权只能设置一个回调域名的问题