当前位置: 首页 > 知识库问答 >
问题:

codeigniter 4中的CORS问题:对起飞前请求的响应没有通过权限改造检查

皮安顺
2023-03-14

我正在用Codeigniter 4制作一个反应应用程序的api。在邮递员中一切正常,但当我用axios提出请求(也尝试获取)时,它会出现CORS错误

CORS策略阻止从http://localhost:8080/testposthttp://localhost:3000访问XMLHttpRequest:对预试请求的响应不通过权限改造检查:请求的资源上不存在访问控制允许起源标头。

我尝试将标题添加到基本控制器:

header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Methods: POST,GET, OPTIONS");
header("Access-Control-Allow-Headers: *");

现在,它可以很好地处理没有JSON主体的请求,但当我发送JSON主体时,也会发生同样的错误。

axios.post("http://localhost:8080/testpost", { data: "test" })
    .then((response) => {
        console.log(response);
    })
    .catch((err) => {
        console.log("error!!!");
    });
// Routes.php
$routes->post('/testpost', 'Home::testPost');
// Home Controller
public function testPost()
{
    return $this->response->setJSON('test response');
}

谢谢你的帮助

共有1个答案

楚健
2023-03-14

请尝试在www/public目录的根目录中设置Apache响应头并将方法重定向到.htaccess,如下所示:

#Redirect for CORS Preflight request
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]
#Set headers to access CORS Requests / allowing localhost only
Header always add Access-Control-Allow-Origin "*"
Header always add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header always add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"

注意:小心添加标题始终将访问控制允许源“*”添加到您的。htaccess“*”为攻击者打开大门,用域或域替换*

 类似资料:
  • 选项https://dev-01-api-apptracker2/管理员401(未经授权) 从源https://dev-01-web-apptracker2在'https://dev-01-api-apptracker2/Admin'访问XMLHttpRequest'已被CORS策略阻止:对起飞前请求的响应不通过权限改造检查:请求的资源上不存在'Access-Control-允许-Origin'标

  • 当我试图通过Chrome的ajax请求访问API时,我收到了以下响应: "加载http://localhost:1880/api_resource失败:对预试请求的响应没有通过权限改造检查:请求的资源上没有'Access-Control-允许-起源'标头。因此,原产地http://localhost:3000不允许进入。" 从消息中可以看到,客户端和API都在本地运行。 据我所知,这种情况与COR

  • 我在chrome上遇到了以下问题: 访问“http://*****/places?holiday_type=resort”获取信息 我的代码是: }

  • 我正在使用reactjs前端,在后端使用Spring Boot。我尝试从前端调用endpoint,如下所示: 当我发出请求时,我得到以下错误:- 访问位于“”的XMLHttpRequesthttp://localhost:8000/ckcapp/api/posttest“起源”http://localhost:3000'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在

  • 无法加载XMLHttpRequesthttp://xxx.xxx.对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“access control Allow Origin”标头。因此,不允许访问源“null”。响应的HTTP状态代码为500。 我试图用ajax发送一个xml肥皂,但给了我那个错误。我尝试了很多选项,但似乎都不起作用,这是代码: 我做错了什么?我发送了一个POST操作,但它将

  • 我在做这个请求: 但在执行该方法时,我遇到了以下错误:访问'http://localhost:8083/uaa/addPermission/group/2“起源”http://localhost:3000'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:它没有HTTP ok状态。我已经有了CORS Chrome插件,我可以做其他类型的请求,比如POST和GET,接收请求的方法有@Cro