服务器支持跨域请求

nginx,apache,服务器 2016-10-16

最近工作中遇到前端采用ajax请求服务器(php)然后填充数据的情况,由于浏览器默认的同源策略是不允许跨域请求的,请求虽然可以成功但是会报错。之前遇到这种情况都是服务器端将接口请求的结果存在文件中,然后发给前端进行调试的,那么问题来了,每个接口都需要一个文件,然后前端进行调试,最后提交时还要将请求的地址改回实际生产环境的地址,很是麻烦。后来在网上查阅,研究,最终找到了解决办法。其中网上有好多文章说可以允许ajax跨域请求的服务器配置但很多都是坑,试了不起作用。前端和后端在同一局域网内,前端可以通过ip访问后端开发者的电脑,这样就可以实现前端调试了。下面的方法暂未考虑安全方面问题(ps本人只是初级菜鸟,安全方面了解不多),如果需要请另行解决。
1、不修改服务器配置文件,只是在php脚本文件顶部输出header信息。
header(“Access-Control-Allow-Origin: *”); //允许所有源的请求
2、nginx服务器
修改nginx配置文件,在http代码块中添加
add_header Access-Control-Allow-Origin *; #允许所有源的请求
add_header Access-Control-Allow-Methods GET,POST,OPTIONS; #允许的请求方法(如果是单纯为了调试可以不加)
然后重启nginx服务。
3、apache服务器
修改apache配置文件。
(1)确认已开启 headers_module模块功能;
(2)修改apache配置文件,在<Directory>块中添加 Header set Access-Control-Allow-Origin *
默认配置:
<Directory />
AllowOverride none
Require all denied
</Directory>
修改后的配置:
<Directory />
AllowOverride none
Require all denied
Header set Access-Control-Allow-Origin *
</Directory>
重启apache服务。

上面的三种方法已经亲测,均可以实现ajax跨域请求。更多关于ajax方面的内容可以查看w3c标准。

楼主残忍的关闭了