【发布时间】:2019-12-29 08:17:06
【问题描述】:
尝试从我的 Angular 8 Web 应用程序发出 JWT 授权的 json rest api 请求,但它给出了上述错误。已遵循所有合理的 CORS 配置步骤,然后将规则放宽到仍然无法正常工作的程度,我已向你们寻求帮助。
所以就 CORS 配置而言,在我开始的 php 方面:
header("Access-Control-Allow-Origin: http://localhost:4200");
header("Content-Type: application/json;charset=utf-8");
header("Access-Control-Allow-Methods: OPTIONS, GET, PUT, POST, DELETE");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
我把事情放慢了一点:
header("Access-Control-Allow-Origin: *");
header("Content-Type: *");
header("Access-Control-Allow-Methods: *");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: *");
但后来我在 CORS 文档中读到 Access-Control-Allow-Headers 不允许 *,所以我恢复了该行。
目前我有:
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json, text/plain, */*");
header("Access-Control-Allow-Methods: OPTIONS, GET, PUT, POST, DELETE");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, X-Requested-With, Authorization");
我得到的错误是:
访问 XMLHttpRequest 在 'http://localhost/api/controllers/asset.php/' 来自原点 'http://localhost:4200' 已被 CORS 策略阻止:响应 预检请求未通过访问控制检查:它没有 HTTP 正常状态。
这是来自调试工具 (Chrome) 中网络选项卡的请求的标头信息。
显示临时标题 Accept: application/json, text/plain, / 授权:承载 eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOm51bGwsImF1ZCI6IlRIRV9BVURJRU5DRSIsImlhdCI6MTU2NjYyOTIxNywibmJmIjoxNTY2NjI5MjE5LCJleH....已编辑
这是在 apache 上运行 php 7.2
我希望新的宽松 CORS 设置能够正常工作,但我仍然收到此错误。
如何调整 CORS 设置以满足飞行前请求?
【问题讨论】:
-
检查您的broeser开发者工具中的网络标签。您应该看到一个带有“OPTIONS”方法的请求,这是预检请求。从上面的错误看来,这个请求没有得到 HTTP ok 响应