http。当我的客户端应用程序和api位于localhost中时,agularJs控制器中的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");
还是一样的错误。
我在控制器类中添加了以下构造函数
public function __construct($config = 'rest')
{
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");
parent::__construct();
}
如果其他人面临此问题,请在rest中启用CORS。Codeigniter REST控制器的php文件为我工作。这里的评论中也清楚地记录了这一点https://github.com/chriskacerguis/codeigniter-restserver/blob/master/application/config/rest.php
//Change this to TRUE
$config['check_cors'] = TRUE;
//No change here
$config['allowed_cors_headers'] = [
'Origin',
'X-Requested-With',
'Content-Type',
'Accept',
'Access-Control-Request-Method',
'Authorization',
];
//No change here
$config['allowed_cors_methods'] = [
'GET',
'POST',
'OPTIONS',
'PUT',
'PATCH',
'DELETE'
];
//Set to TRUE to enable Cross-Origin Resource Sharing (CORS) from any source domain
$config['allow_any_cors_domain'] = TRUE;
//Used if $config['check_cors'] is set to TRUE and $config['allow_any_cors_domain'] is set to FALSE.
//Set all the allowable domains within the array
//e.g. $config['allowed_origins'] =['http://www.example.com','https://spa.example.com']
$config['allowed_cors_origins'] = [];
尝试将选项添加到允许的方法中。
header("Access-Control-Allow-Methods: GET, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type, Content-Length, Accept-Encoding");
一旦设置了头,当请求为“选项”时立即返回。
if ( "OPTIONS" === $_SERVER['REQUEST_METHOD'] ) {
die();
}
请参见此答案。
Angular发送符合W3C CORS规范的飞行前请求,该请求将在实际尝试之前检查允许的正确方法。
就我个人而言,我觉得Mozilla开发者网络CORS页面更容易阅读,有助于理解CORS的流程。
问题内容: 当我的客户端应用和api位于本地主机时,agularJs控制器中的http.get请求可以正常工作。将api移至服务器时,出现问题。 客户端使用angularJs 日志给出:跨域请求被阻止:同源策略禁止读取位于http://domain.com/api/spots/2/0的远程资源。可以通过将资源移至同一域或启用CORS来解决此问题。 我已经将这两行添加到我的控制器构造中 还是一样的错
问题内容: 我一直在尝试找出如何在CI中启用$ _GET。 看起来框架故意破坏了$ _GET数组,并且启用它需要认真修改核心类。谁能说这是为什么,以及如何克服它? 提醒您,我希望保持URI的解析和路由,只需要$ _GET即可。 问题答案: 将以下库添加到您的应用程序库。它覆盖清除$ _GET数组的默认输入库的行为。它允许URI段和查询字符串混合使用。 应用程序/库/MY_Input.php 修改某
如何在Spring5WebFlux项目中启用CORS? 我找不到合适的留档。
问题内容: 我已经使用SLIM PHP框架创建了一个基本的RESTful服务,现在我正尝试将其连接起来,以便可以从Angular.js项目访问该服务。我已经了解到Angular开箱即用地支持CORS,而我要做的就是在我的.htaccess文件中添加以下行: 我已经做到了,我的REST应用程序仍然可以正常工作(.htaccess错误导致500个内部服务器没有错误),但是当我尝试从test- cors
问题内容: 我使用Flickr照片搜索API的JavaScript创建了一个演示。现在,我将其转换为AngularJs。我在互联网上搜索,发现下面的配置。 组态: 服务: 控制器: 问题答案: 你不知道 您请求的服务器必须实现CORS才能从您的网站访问权限中授予JavaScript。您的JavaScript无法授予自己访问其他网站的权限。
问题内容: 我正在尝试使用jquery提出跨源请求,但它一直被消息拒绝 XMLHttpRequest无法加载http:// …请求的资源上不存在“ Access-Control-Allow-Origin”标头。因此,不能访问Origin…。 我正在使用flask,heroku和jquery 客户端代码如下所示: 在heroku方面,我正在使用flask,就像这样 问题答案: 当我部署到Heroku