如何讓伺服器本身支援跨域請求呢?
如果伺服器是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的跨域通路了.