对 CORS preflight OPTIONS 请求的响应是 Laravel API 中的 500 Internal Server Error

Posted

技术标签:

【中文标题】对 CORS preflight OPTIONS 请求的响应是 Laravel API 中的 500 Internal Server Error【英文标题】:Response to CORS preflight OPTIONS request is 500 Internal Server Error in Laravel API 【发布时间】:2019-10-27 21:05:16 【问题描述】:

我正在开发一个 Laravel 和 Angular 项目。项目在另一台计算机上运行良好,但我的笔记本电脑出现以下错误。

我使用了this 包。我尝试了几种方法,但找不到任何解决方案。

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource

我的.htaccess 文件如下所示

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %HTTP:Authorization .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%HTTP:Authorization]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %REQUEST_FILENAME !-d
    RewriteCond %REQUEST_URI (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %REQUEST_FILENAME !-d
    RewriteCond %REQUEST_FILENAME !-f
    RewriteRule ^ index.php [L]
</IfModule>

有人可以在这方面帮助我吗?

【问题讨论】:

您需要解决的问题是,您发送请求的服务器正在响应 OPTIONS 请求,出现 500 Internal Server Error。所以你没有 CORS 问题。相反,您有 500 Internal Server Error 问题。您的浏览器报告 CORS 错误的唯一原因是 500 错误没有 Access-Control-Allow-Origin 响应标头。 500 错误几乎不会出现该标题。查看服务器端的服务器日志,以查看服务器正在记录哪些消息,说明导致服务器发送 500 响应的内部服务器问题。 谢谢@sideshowbarker。在 localhost 工作时如何查看服务器日志? 谢谢@sideshowbarker。带有 500 Internal Server Error 的 OPTIONS 请求是什么意思?我打错网址了吗? @sideshowbarker 我希望我能支持你的回答。我花了半天时间不明白为什么会出现这个错误,而且(当然)我在 cors 设置中所做的任何事情都没有帮助。谢谢你,我终于找到了实际的错误 @CSquare 很高兴它帮助了你。不幸的是,您遇到的情况是许多其他人也经常遇到的情况。浏览器没有在 CORS 错误消息中包含 HTTP 状态代码的事实——并且不会以其他方式使 HTTP 状态代码非常容易被发现——导致许多开发人员最终浪费了大量时间。我希望我可以说我知道浏览器会在这方面做出一些改进……但我不能。事实上,Chrome 已经做出了一些改变,这会让开发人员的情况变得更糟;见***.com/q/57410051/441757 :( 【参考方案1】:

您只能设置一次Access-Control-Allow-Origin 标头。

似乎这个标头也设置在 laravel-cors 包配置之外的其他位置。例如,在您的 .htaccess 文件中,在您的服务器配置中,或者在您手动创建的其他一些中间件中(因为您只在一个环境中遇到异常,可能性较小)。

【讨论】:

谢谢@piscator。我用.htaccess 文件编辑了我的问题。谢谢。

以上是关于对 CORS preflight OPTIONS 请求的响应是 Laravel API 中的 500 Internal Server Error的主要内容,如果未能解决你的问题,请参考以下文章

已解决 - CORS、OPTIONS 和 PreFlight 问题 在 Vue.js 中使用 Axios 使用 REST API

CORS preflight OPTIONS 请求从 Windows Authenticated web api 返回 401(未授权)

CORS Preflight 请求是不是包含请求的标头?

Preflight(options) 请求的正确成功状态代码是啥? [复制]

HTTP协议详解(HyperText Transfer Protocol 超文本传输协议)访问控制(CORS) (OPTIONS预请求preflight request)浏览器同源策略

浏览器中的preflight请求-预检请求