当我的客户端应用和api位于本地主机时,agularJs控制器中的http.get请求可以正常工作。将api移至服务器时,出现问题。
客户端使用angularJs
$http.get('http://domain.com/api/spots/2/0').success(function(datas){ console.log(datas); });
日志给出:跨域请求被阻止:同源策略禁止读取位于http://domain.com/api/spots/2/0的远程资源。可以通过将资源移至同一域或启用CORS来解决此问题。
我已经将这两行添加到我的控制器构造中
header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Methods: GET");
还是一样的错误。
尝试添加OPTIONS到允许的方法。
OPTIONS
header("Access-Control-Allow-Methods: GET, OPTIONS"); header("Access-Control-Allow-Headers: Content-Type, Content-Length, Accept-Encoding");
设置标头后,当请求为方法“ OPTIONS”时立即返回。
if ( "OPTIONS" === $_SERVER['REQUEST_METHOD'] ) { die(); }
Angular发送符合W3C CORS规范的预检请求,该请求将在实际尝试之前检查正确的允许方法。
就我个人而言,我发现Mozilla开发人员网络CORS页面在此问题上更易于阅读,以帮助理解CORS的流程。