天天看點

如何讓伺服器支援跨域呢?

如何讓伺服器本身支援跨域請求呢?

如果伺服器是apache

(1)修改http服務的配置檔案:c:\wamp\bin\apache\apache2.4.4\conf\httpd.conf

把loadmodule headers_module modules/mod_headers.so 前面的注釋删除.

(2)添加header set access-control-allow-origin *

<directory />

    allowoverride none

    require all granted

         header set access-control-allow-origin *

</directory>

(3)重新開機http服務

建立一個過濾器,代碼如下:

如何讓伺服器支援跨域呢?

package com.web.filter;  

import java.io.ioexception;  

import javax.servlet.filter;  

import javax.servlet.filterchain;  

import javax.servlet.filterconfig;  

import javax.servlet.servletexception;  

import javax.servlet.servletrequest;  

import javax.servlet.servletresponse;  

import javax.servlet.http.httpservletresponse;  

import com.common.dict.constant2;  

import oa.service.dictionaryparam;  

public class simplecorsfilter implements filter{  

    @override  

    public void destroy() {  

    }  

    public void dofilter(servletrequest req, servletresponse res,  

            filterchain chain) throws ioexception, servletexception {  

            httpservletresponse response = (httpservletresponse) res;  

            response.setheader("access-control-allow-origin", dictionaryparam.get(constant2.dictionary_group_global_setting, "accesscontrolalloworigin"));  

            response.setheader("access-control-allow-methods", "post, get, options, delete");  

            response.setheader("access-control-max-age", "3600");  

            response.setheader("access-control-allow-headers", "x-requested-with");  

            chain.dofilter(req, res);  

    public void init(filterconfig arg0) throws servletexception {  

}  

關鍵代碼:response.setheader("access-control-allow-origin", "*");

 修改web.xml,增加:

如何讓伺服器支援跨域呢?

<filter>  

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

      <filter-class>com.web.filter.simplecorsfilter</filter-class>  

    </filter>  

    <filter-mapping>  

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

    </filter-mapping>  

這樣伺服器就支援ajax的跨域通路了.