跨域问题解决方法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

J2EE项目文件上传跨域问题及解决方法

主要涉及普通的跨域问题和富文本flash跨域问题;目前问题已经通过以下两种办法进行了解决,并通过了安全测试:

一、普通文件上传跨域问题解决方法:

COR是页面层次的控制模式。每一个页面需要返回一个名为

‘Access-Control-Allow-Origin’的HTTP头来允许外域的站点访问。

在文件上传服务器端增加跨域拦截器设置,首先在WEB.XML配置拦截器,与普通拦截器配置方法一样,在拦截器中增加如下代码:HttpServletResponse _response = (HttpServletResponse) response;

_response.setContentType("text/html;charset=UTF-8");

_response.setHeader("Access-Control-Allow-Origin", "*");

_response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");

_response.setHeader("Access-Control-Max-Age", "0");

_response.setHeader("Access-Control-Allow-Headers", "Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token");

_response.setHeader("Access-Control-Allow-Credentials", "true");

_response.setHeader("XDomainRequestAllowed","1");

参见下图标注区域代码:

二、富文本文件及图片上传跨域问题解决方法:

由于富文本上传大多应用Flash进行上传,在Flash和Silverlight中,服务器需要创建一个crossdomain.xml的文件来允许跨域请求。此文件放置在TOMCAT目录下的ROOT文件夹中。

crossdomain.xml具体配置参见下图:

对应配置参数详解:

permitted-cross-domain-policies :指定元策略。除套接字策略文件外,所有策略文件的默认值均为master-only,套接字策略文件的默认值为all。

allow-access-from:元素用于授权发出请求的域从目标域中读取数据。可以通过使用通配符(*),为多个域设置访问权限。

domain:指定要授予访问权限的发出请求的域。可以是域名或IP地址。子域将被视为不同的域。指定域时可以使用通配符星号( * )表示多个域。单独使用星号( * )表示所有域。一般不建议设置为星号允许所有域访问。

allow-http-request-headers-from:元素用于授权发出请求的域中的请求文档将用户定义的标头发送到目标域。而allow-access-from 元素旨在授权从目标域提取数据。这个标签授权以标头的形式推送数据。

domain:指定要授予访问权限的的域。可以是域名,也可以是IP地址,子域将被视为不同的域。通配符 (*) 单独使用时可用于表示所有域,在用作以句点 (.) 分隔的明确二级域名前缀时表示多个域。表示单个域时需要使用单独的 allow-access-from 元素。

headers:以逗号分隔的标头列表,表示允许发送的请求域。通配符 (*) 可用于准许所有标头或头后缀,从而支持以相同字符开头但以不同字符结尾的标头。

相关文档
最新文档