如何让服务器支持跨域,第1张

要看服务器类型,如果服务器是apache

(1)修改http服务的配置文件:C:\wamp\bin\apache\Apache244\conf\httpdconf

把LoadModule headers_module modules/mod_headersso 前面的注释删除

(2)添加Header set Access-Control-Allow-Origin

<Directory />

AllowOverride none

Require all granted

Header set Access-Control-Allow-Origin

</Directory>

(3)重启http服务

如果是tomcat,比如spring MVC项目

创建一个过滤器,代码如下:

Java代码 收藏代码

package comwebfilter;

import javaioIOException;

import javaxservletFilter;

import javaxservletFilterChain;

import javaxservletFilterConfig;

import javaxservletServletException;

import javaxservletServletRequest;

import javaxservletServletResponse;

import javaxservlethttpHttpServletResponse;

import comcommondictConstant2;

import oaserviceDictionaryParam;

public class SimpleCORSFilter implements Filter{

@Override

public void destroy() {

}

@Override

public void doFilter(ServletRequest req, ServletResponse res,

FilterChain chain) throws IOException, ServletException {

HttpServletResponse response = (HttpServletResponse) res;

responsesetHeader("Access-Control-Allow-Origin", DictionaryParamget(Constant2DICTIONARY_GROUP_GLOBAL_SETTING, "AccessControlAllowOrigin"));

responsesetHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");

responsesetHeader("Access-Control-Max-Age", "3600");

responsesetHeader("Access-Control-Allow-Headers", "x-requested-with");

chaindoFilter(req, res);

}

@Override

public void init(FilterConfig arg0) throws ServletException {

}

}

关键代码:responsesetHeader("Access-Control-Allow-Origin", "");

<filter>

<filter-name>cors</filter-name>

<filter-class>comwebfilterSimpleCORSFilter</filter-class>

</filter>

<filter-mapping>

<filter-name>cors</filter-name>

<url-pattern>/</url-pattern>

</filter-mapping>

这样服务器就支持ajax的跨域访问了

服务端的解决方案的基本原理就是,由客户端将请求发给本域服务器,再由本域服务器的代理来请求数据并将响应返回给客户端。

最常用的服务器解决方案就是利用web服务器本身提供的proxy功能,如apache和lighttpd的mod_proxy模块。在百度内

部,transmit的分流功能也可以解决部分跨域问题。但这些方法都有一定的局限性,鉴于安全性等问题的考虑,space这边最后开发了一个专门用于处

理跨域请求代理服务的spproxy模块,用于彻底解决js跨域问题。

下面我们将以空间的开放平台为例,简单介绍下如何通过apache的mod_proxy、transmit的分流以及space的spproxy模块来解

决该跨域问题,并简单介绍下spproxy的一些特性、缺点及下一步的改进计划。

空间在展现每个UWA开放模块之前都必须请求该模块的xml源代码以进行解析,每个模块的源代码文件都是存放在act域下的/ow/uwa目录下,那么在

用户空间首页(hi域)中请求该xml文件时就会存在js跨域问题。要解决该问题,只能让js向hi域的web服务器请求xml文件,而hi域web服务

器则通过一定的代理机制(如mod_proxy、transmit分流、spproxy)向act域的web服务器请求文件

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何让服务器支持跨域

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情