Php Godaddy CORS发行-角度7-拉维5

Php Godaddy CORS发行-角度7-拉维5,php,angular,laravel,apache,Php,Angular,Laravel,Apache,我在Angular 7中开发了应用程序,在Laravel 5.7中开发了API 对于CORS问题,我还在laravel安装了barryvdh/laravel CORS软件包,并在本地安装了该软件包 但是当我在Godaddy单一主机上部署这两个应用程序时,即使用cPanel的Starter Linux主机 主目录中的Angular应用程序public\u html public\u html/api目录中的Larvel api指向 public\u html/api/public API不工作,我

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

对于CORS问题,我还在laravel安装了barryvdh/laravel CORS软件包,并在本地安装了该软件包

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

  • 主目录中的Angular应用程序public\u html
  • public\u html/api目录中的Larvel api指向 public\u html/api/public
  • 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>
    
    非常感谢您的任何想法或帮助。提前谢谢

    飞行前请求不允许重定向

    因为您有一个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\u html/.htaccess的一个目录,该行用于保护public\u html/api目录中的文件不受主域的根访问

    RedirectMatch 403 ^/api/.*$
    
    当我注释/删除这一行时,api开始工作,但public\u html/api目录中的文件不安全

    然后为了保护这些文件,我在public\u html/api/.htaccess上又创建了一个文件,并添加了这些行

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

    我实现了这两个目标:api正在工作,并且public\u html/api中的文件得到了保护。

    您有HTTP到HTTPS的重定向吗?如果是这样,您需要将API调用指向HTTPS版本。我有http redirectOK,因此正如消息所述,CORS请求不能像这样重定向。你的API调用应该以HTTPS开始,而不是依赖重定向。我正在疯狂地尝试修复你遇到的相同问题。是否有任何方法可以提供有关已执行修复的代码?所以,我没有打电话到https。因此,我没有这种情况,但有相同的错误。如果您可以提供您是如何离开config/cors.php文件的,我将尝试获得更好的想法。我什么都试过@我的服务器上没有SSL证书,无法通过HTTPS调用API。有其他选择吗?当然,如果您的API没有HTTPS,请停止将其重定向到HTTPS。
    RewriteEngine On
    RewriteRule !^public/ - [F,NC]