三级域名跨域和使用rewrite过程中会丢失post请求和header里面的内容,是目前互联网中常常遇到的问题,比较头疼,很多人是在处理过程中避免使用三级域名,但当实际情况中遇到了没法避免的情况怎么办?下面就一个实际情况中遇到的例子说下如何使用nginx的pass_proxy模块解决三级域名跨域问题。
问题:
生产环境中有一个a.b.c.com域名需要调用e.f.g.com这个文件上传接口上传文件,开始简单实用nginx rewrite模块跳转页面,但为了保证安全和用户体验,需要增加用户cookie验证及地址栏不跳转域名,经过测试使用rewirte无法实现cookie的传递,前端javascript脚本拿到用户的参数传递给文件上传接口,后端文件上传接口无法拿到传递的参数,因此rewrite方法无法解决问题,实际过程中,另外一个需要解决的问题是需要对请求的url进行重定向,比如:前端访问a.b.c.com/images_upload 对应的请求接口是e.f.g.com/images接口。
解决方法:
经过查看nginx官方文档和多次测试最终的解决方法如下:
配置a.b.c.com的nginx配置文件,增加pass_proxy配置:
location /images_upload{
proxy_pass http://e.f.g.com/images;
}
经过测试,前端传递过来的cookie及post参数均能收到,完美解决此问题。
阅读(3877) | 评论(0) | 转发(0) |