加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > C语言 > 正文

前后端分离之Ajax跨域问题整理

发布时间:2020-12-15 00:42:10 所属栏目:C语言 来源:网络整理
导读:前后端分离用ajax访问restful接口,免不了的就是ajax的跨域问题。最近在项目开发中使用Jquery ajaxFileUpload跨域访问进行文件上传,在本机chrome设置了chrome.exe" --disable-web-security,可以跨域访问。但是部署到服务器后,因为和文件服务器存在跨域,

前后端分离用ajax访问restful接口,免不了的就是ajax的跨域问题。最近在项目开发中使用Jquery ajaxFileUpload跨域访问进行文件上传,在本机chrome设置了chrome.exe" --disable-web-security,可以跨域访问。但是部署到服务器后,因为和文件服务器存在跨域,导致不能正常上传。

搜索到的解决方案:

这个不是插件本身的问题,我的解决方法也只适用于同一主域名
在url的请求返回中添加
因为请求是通过读取返回页面的文档内容,在这时候实际返回页面是会执行js脚本的,并且该脚本不会进入后续的文档加载中
所以只需将修改文档域与当前页面一致就行
在调用页面添加:document.domain = "xxxx.com";
不修改插件本身

什么是跨域?
简单的来说,出于安全方面的考虑,页面中的JavaScript无法访问其他服务器上的数据,即“同源策略”。而跨域就是通过某些手段来绕过同源策略限制,实现不同服务器之间通信的效果。

同一域名下 允许
同一域名下不同文件夹 允许

同一域名,不同端口 不允许
同一域名,不同协议 不允许
域名和域名对应ip 不允许
主域相同,子域不同 不允许
同一域名,不同二级域名(同上) 不允许
不同域名 不允许

跨域的方案

除了架设服务器代理(浏览器请求同源服务器,再由后者请求外部服务),有三种方法规避这个限制

1 JSONP

JSONP是服务器与客户端跨源通信的常用方法。最大特点就是简单适用,老式浏览器全部支持,服务器不用做任何改造。
它的基本思想是,网页通过添加一个