同一域 Ajax/PHP 上的 CORS 问题
Posted
技术标签:
【中文标题】同一域 Ajax/PHP 上的 CORS 问题【英文标题】:CORS issue on same domain Ajax/PHP 【发布时间】:2021-11-22 08:18:10 【问题描述】:我在使用 ajax 调用时遇到了 CORS 问题。 我有一个通过 ajax 调用的 php 文件,其中包含以下标题
header('Access-Control-Allow-Origin: * ');
header('Access-Control-Allow-Methods: GET, ADD, POST, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: *'); // also tested with Content-Type, x-requested-with
调用文件时没有错误
http://www.mywebsite.com
但是当它被调用时会抛出 403 禁止错误
https://mywebsite.com
https://www.mywebsite.com
更具体地说,GET 是可以的,但不允许 ADD。 由于我们谈论的是同一个域,我不明白为什么会出现“403”错误
感谢您的帮助,
【问题讨论】:
使用方法ADD
意味着这将不再是simple request,而是导致preflighted request - 所以你的服务器端逻辑也需要正确处理。
但这听起来不像是我一开始就开始实施 CORS 的情况。 为什么可以通过无前缀和带 www 前缀的主机名访问您的网站?通常,您会决定使用一个版本,并在请求另一个版本时创建自动重定向......即使这不是一个选项,那么假设您的端点也可以通过这两个版本访问,它可能会那么,为您的请求使用 relative URL 仍然更有意义,这样它也不会是跨域的。
是的,可能是预检。顺便说一句,我第一次听到 ADD 方法,这真的正确吗? dariuscoder.com/2021/09/16/how-to-debug-cors 你可以在 nginx 上看到预检示例。为了获得更好的帮助 - 告诉我们您使用什么服务器,添加服务器配置。
【参考方案1】:
什么php框架 如果这是您使用的 laravel,请确保您看到文件 config/cors.php 或文件VerifyCsrfToken
protected $except = [
'*'
];
【讨论】:
以上是关于同一域 Ajax/PHP 上的 CORS 问题的主要内容,如果未能解决你的问题,请参考以下文章
由于跨域资源共享 (CORS),主机 Web 上的 SP.ClientContext 失败
托管在同一台服务器上的 Django 和 React 的 CORS 问题