博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
fastDFS+webUploader中遇到的跨域问题
阅读量:6533 次
发布时间:2019-06-24

本文共 1787 字,大约阅读时间需要 5 分钟。

hot3.png

一、什么是跨域访问

    概括来说除了同一域名且同一端口下的请求都属于跨域访问,具体可参考:    

    

二、webUpLoader中跨域

     浏览器对于跨域请求,我们会在NetWork里面看见浏览器发送了两次请求,其中第一次是浏览器会先向fastDfs服务(目标服务器)发送一次options请求:

// options的响应,注意和下面允许跨域的结果对比Response Headers:Remote Address:ip:hostRequest URL:http://ip:port/*****/***/uploadRequest Method:OPTIONS   // 此处说明是OPTIONS请求Status Code:200 OK

        来验证是否支持跨域请求,如果不支持则返回:

XMLHttpRequest cannot load http://ip:/hermes-web/fdfs/upload. No 'Access-Control-Allow-Origin'    // 此处证明本次请求为跨域请求header is present on the requested resource. Origin 'http://localhost:8088' is therefore not allowed access.

        上面错误说明浏览器向服务器发送的OPTIONS请求后告知浏览器,服务器不支持跨域请求,无需再发送真正的请求内容了;

所以,我们现在需要在服务器端配置,使其支持跨域的请求;首先得找到服务器端接收请求的代码位置;一般来说从前台发送的请求都会到filter,所以可以现在我们的filter类中进行允许跨域的配置:

// 必须项,告诉客户端我们支持跨域,值可以是具体的域名也可以是*代表允许所有的服务跨域response.addHeader("Access-Control-Allow-Origin","*");// 非必要项,告诉服务器,我们支持跨域的方法response.addHeader("Access-Control-Allow-Methods","GET,POST,OPTIONS");

        再次请求;出现如下响应,说明服务器端已经允许跨域访问了:    

// options的响应,注意和上面不允许跨域的结果对比Response Headers:Access-Control-Allow-Methods:GET,POST,OPTIONSAccess-Control-Allow-Origin:*    //允许访问的域Allow:GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCHCache-Control:no-cacheContent-Length:0Date:Mon, 23 Jan 2017 07:24:28 GMTExpires:Thu, 01 Jan 1970 00:00:00 GMTPragma:No-cacheServer:Apache-Coyote/1.1

三、后记:

       1、对于无法控制跨域请求的服务器时我们可以通过nginx的反响代理进行请求转发以达到跨域的目的,,但由于这一会多一次转发,所以不推荐这一做,具体做法如下:

        

        2、对于webUpLoader跨域问题网上的参考做法:        

uploader.on('uploadBeforeSend', function(obj, data, headers) {    $.extend(headers, {      "Origin": "http://localhost:3000",      "Access-Control-Request-Method": "POST"    });});

        3、对于阿里云中的跨域:

        需要在对阿里云的请求中未配置允许跨域:

response.addHeader("Access-Control-Allow-Origin","*");// 必须response.addHeader("Access-Control-Allow-Methods","GET, POST");// 可选

    如有错误,望其指正!

参考地址:

转载于:https://my.oschina.net/freelili/blog/829658

你可能感兴趣的文章
【STRIDE】【1】安全威胁分析设计
查看>>
CCNA OSPF特性、术语
查看>>
国内 CDN 产品发展历史和现状整理
查看>>
NFS服务器的搭建
查看>>
linux基础知识总结(三)
查看>>
python 中set模块的用法
查看>>
Quartz2.1.5学习(一)
查看>>
[体感游戏]关于体感游戏的一些思考(二) --- POV和基本场景
查看>>
EIGRP路由协议中邻居的发现以及恢复
查看>>
cacti 邮件通知
查看>>
使用Eclipse+Axis2构建Web Service应用(客户端无需生成Stub方式)
查看>>
静态Include和动态Include测试并总结
查看>>
PopupWindow
查看>>
Android开发者指南(11) —— Optimizing Apps for Android 3.0
查看>>
Hyper-V RTM Release
查看>>
用脚本来定制ESXI安装镜像
查看>>
aFlex入门(二)
查看>>
把python文件编译成exe文件
查看>>
享元模式(Flyweight)解析例子
查看>>
C++ STL速查手册笔记
查看>>