繁体   English   中英

Godaddy CORS 问题 - Angular 7 - Laravel 5

[英]Godaddy CORS issue - Angular 7 - Laravel 5

我在Angular 7 中开发了应用程序,在Laravel 5.7 中开发了 API。

对于 CORS 问题,我还在Laravel 中安装了barryvdh/laravel-cors包,并且在本地运行良好。

但是当我在 Godaddy 单一主机上部署这两个应用程序时,即使用 cPanel 的 Starter Linux Hosting

  1. 主目录public_html 中的Angular 应用程序
  2. 指向public_html/api/public 的public_html/api目录中的 Laravel API

API 不起作用,我看到此错误

Access to XMLHttpRequest at 'http://api.example.com/api/documentations?page=1' from origin 'http://example.com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request

我在 stackoverflow 和其他来源上看到了很多答案,但似乎没有什么对我有用。

我尝试将标题添加到.htaccess文件

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

以及直接到index.php但没有运气。

header('Access-Control-Allow-Origin', '*')

任何想法或帮助都受到高度赞赏。 提前致谢。

预检请求不允许重定向

由于您有 HTTP 到 HTTPS 的重定向,并且您的 API 调用正在尝试访问http://api.example.com/api/documentations?page=1 ,因此它们将失败,因为(如消息所述) 您不能重定向 CORS 预检。

更新您的代码以通过 HTTPS 进行 API 调用。

感谢@ceejayoz 的宝贵意见和回答。 我能找到问题

我有两个.htaccess文件。 对于主域,一个在

public_html/.htaccess

另一个用于子域在

public_html/api/public/.htaccess

public_html/.htaccess中的这一行具有保护public_html/api目录中的文件免受主域 root 访问的影响

RedirectMatch 403 ^/api/.*$

当我评论/删除这一行时,API 开始工作,但public_html/api目录中的文件不安全。

然后为了保护文件,我在public_html/api/.htaccess创建了另一个文件并添加了这些行

RewriteEngine On
RewriteRule !^public/ - [F,NC]

我实现了两个目标: API 正在运行,并且public_html/api中的文件是安全的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM