我在localhost(xampp)/ codeigniter上有api,我试图通过angular 4访问它,浏览器一直在控制台中显示此错误。api在postman中工作正常。
【火狐】:
已阻止跨源请求:同源策略不允许阅读位于http://lvh.me/ci-abc/api/get_alltasks的远程资源。(原因:CORS标头“访问控制-允许-来源”缺失)。
【 chrome 色】:
无法加载http://lvh.me/ci-abc/api/get_alltasks:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问源“http://localhost:4200”。
我试过将API网址改为localhost和127.0.0.1,但没有成功。我是一个初学者,所以请原谅我,如果我错过了什么。
Angular 4中的服务功能
gettasks()
{
return this.http.get('http://lvh.me/ci-abc/api/get_alltasks')
.map(res=>res.json());
}
代码点火器中的API函数
function get_alltasks_get()
{
{
$result = $this->todo_model->get_alltasks();
if ($result) {
$this->response($result, 200);
} else {
$this->response("No record found", 404);
}
}
}
3条答案
按热度按时间x6492ojm1#
这不是Angular 问题,问题的原因是因为你不是在同一个域作为您的服务器是,例如,如果你试图发送一个请求到
example.com
从johndoe.com
你会得到错误,它的浏览器阻止了请求!浏览器首先发出一个
header
请求,如果该请求被允许,则将发出下一个具有真实的方法类型的请求。对于CodeIgniter,请尝试将OPTIONS添加到允许的方法中。
看看这个answer
wz8daaqr2#
基于PHP的CORS
浏览器会为从
XMLHttpRequest
或Fetch API中发起的跨站点请求发送特定的HTTP headers。它还希望看到与跨站点响应一起发回的特定HTTP头。这些头文件的概述,包括启动请求和处理来自服务器的响应的示例JavaScript代码,以及对每个头文件的讨论,can be found in the HTTP Access Control (CORS)文章和应作为本文的配套文章阅读。
并且应该作为本文的配套文章来阅读。This article介绍了如何用PHP处理访问控制请求和制定访问控制响应。
如果你没有权限配置Apache,你仍然可以从PHP脚本中发送头文件。在PHP脚本中添加以下代码:
unhi4e5o3#
我花了些时间在这上面,我发现了一些事情:
所以我是这么做的:
在App\config\Filters.php中注册过滤器
现在每个来自前端的请求都被允许进入后端。希望这是有意义的,并帮助任何在这方面挣扎的人。