从Ueditor跨域上传,总结的一次跨域上传的爬坑经历

项目内其中一个管理后台须要发布文章,须要一个富文本编辑器,通过一番选择后,最终选择了百度的Ueditor。php

因为上传的文件是上传到另外一台专门存放图片等静态资源的服务器上面的,因此就涉及到了跨域上传。后端

我实现跨域上传的主要方式是将编辑器的先后端分离,前段直接放到须要用的项目内,接收上传的后端(已作权限验证)放到图片服务器上面。跨域

跨域要添加两个HTTP头:浏览器

Access-Control-Allow-Origin: *//容许任意域名发起的跨域请求
Access-Control-Allow-Headers: X-Requested-With,X_Requested_With

开发机器用的是WIN7,、IIS7 在开发机器上面进行的跨域上传一切正常,而后就在IIS6上面进行了调试。服务器

当项目运行在IIS6上面的时候就开始了爬坑经历。前后端分离

首先遇到的是403.1错误。编辑器

后端处理代码是用的“通常处理程序”ashx,默认IIS6不接受OPTIONS请求,因此要为ashx添加容许OPTIONS请求。spa

一切就绪后,悲剧又发生了。调试

此次又迎来了500错误。图片

通过1天的资料查阅都没找到解决方法,最后在火狐上发现了蛛丝马迹:CORS。

HTML5上传的时候就是用的CORS规范,即:在发送真正的上传请求以前会先发送一条OPTIONS请求给服务器,这时候须要服务器响应容许跨域上传的HTTP头,而后中断输出。浏览器接到容许跨域上传的HTTP头后会再次发起真正的上传文件请求(POST)。

根据CORS规范,在后端代码进行OPTIONS响应,而后中断输出就可解决。

文字表达能力不是很好,见谅。

相关文章
相关标签/搜索