1、为何执行测试后返回"no response from server"?

如果执行测试后的效果页和js调试窗口的错误信息如如下2个截图所示,则表示服务端未处理ajax跨域请求。

请求响应:

 

js调试控制台:

2、什么是ajax跨域请求?

概念:只要协议、域名、端口有任何一个不同,都被当作是不同的域。

ajax跨域请求相关知识点可参考文章: 详解js跨域问题    跨域资源共享(CORS)安全性浅析

事例如下

3、接口测试时如何处理ajax跨域请求?

ajax跨域请求相关知识点可参考文章: 详解js跨域问题    跨域资源共享(CORS)安全性浅析

跨域处理目前有如下几种方式:

1、服务端设置允许跨域

以java为例,跨域请求服务端可以通过添加过滤器设置HttpServletResponse中的header来处理,部分源码如下:

@Override
public void doFilter(ServletRequest request, ServletResponse response,
		FilterChain chain) throws IOException, ServletException {
	HttpServletResponse resp = (HttpServletResponse)response;
	//"*"存在风险,建议指定可信任的域名来接收响应信息,如"http://www.sosoapi.com"
	resp.addHeader("Access-Control-Allow-Origin", "*");
	//如果存在自定义的header参数,需要在此处添加,逗号分隔
	resp.addHeader("Access-Control-Allow-Headers", "Origin, No-Cache, X-Requested-With, "
			+ "If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, "
			+ "Content-Type, X-E4M-With");
	resp.addHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");  
	
	chain.doFilter(request, response);
}

2、线下部署

参考线下部署章节。

3、部署代理服务器

由交流群群友提供,在ajax请求和后台服务器直接添加代理服务器,在代理服务器设置跨域需要的头信息,流程大概为:ajax->proxy->服务器。

4、浏览器屏蔽跨域安全检查

以chrome为例,可参考http://www.tuicool.com/articles/AjuqA3。 如果添加"--disable-web-security --user-data-dir"无效的话,重启下浏览器并确保所有chrome后台进程已被关闭,重启后再次访问就可以了

5、浏览器添加伪造Access-Control-Allow-Origin的插件(建议)

由交流群群友提供,以chrome为例,下载Access-Control-Allow-Origin插件