作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
当我的客户端应用程序和 api 在本地主机中时,agularJs Controller 中的 http.get 请求工作正常。当 api 被移动到服务器时,出现了问题。
客户端使用angularJs
$http.get('http://example.com/api/spots/2/0').success(function(data){
console.log(data);
});
日志给出:跨源请求被阻止:同源策略不允许在 http://example.com/api/spots/2/0 读取远程资源.这可以通过将资源移动到同一域或启用 CORS 来解决。
我已将这两行添加到我的 Controller 构造中
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET");
还是一样的错误。
最佳答案
尝试将 OPTIONS
添加到允许的方法中。
header("Access-Control-Allow-Methods: GET, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type, Content-Length, Accept-Encoding");
一旦您设置了 header ,当请求是方法“OPTIONS”时立即返回。
if ( "OPTIONS" === $_SERVER['REQUEST_METHOD'] ) {
die();
}
另见 this answer .
Angular 发送一个 W3C CORS spec compliant preflight request这将在实际尝试之前检查正确的允许方法。
就我个人而言,我发现 Mozilla Developer Network CORS page在这个问题上更容易阅读,以帮助理解 CORS 的流程。
关于php - 在 codeigniter 中启用 cors(@chriskacerguis 的 restserver),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25702991/
当我的客户端应用程序和 api 在本地主机中时,agularJs Controller 中的 http.get 请求工作正常。当 api 被移动到服务器时,出现了问题。 客户端使用angularJs
我是一名优秀的程序员,十分优秀!