php - 尽管设置了 PHP 标头和 .htaccess 文件,但我收到了 CORS 错误
问题描述
我在安全地允许 CORS 方面取得了很多成功,但我尝试过使用另一个页面,但它不起作用。我希望有人能告诉我我错过了什么。我知道 * 是不安全的,但我正在尝试将站点名称作为变量消除。
.htaccess 文件
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
和我的 php 文件的顶部:
// Allow from any origin just for testing...
if (isset($_SERVER['HTTP_ORIGIN'])) {
// in production, no *, but using my real domain
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400');
}
// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
}
使用 ajax 请求访问 php 文件时,我收到:CORS 策略已阻止从源“ https://samesitename.com ”访问“ https://sitename.000webhostapp.com/ ”处的 XMLHttpRequest:无“访问权限” -Control-Allow-Origin' 标头存在于请求的资源上。
它在邮递员中工作。这是标题信息:
Date →Mon, 29 Apr 2019 18:50:03 GMT
Content-Type →text/html; charset=UTF-8
Transfer-Encoding →chunked
Connection →keep-alive
Access-Control-Allow-Origin →*
Access-Control-Allow-Headers →origin, x-requested-with, content-type
Access-Control-Allow-Methods →PUT, GET, POST, DELETE, OPTIONS
Server →awex
X-Xss-Protection →1; mode=block
X-Content-Type-Options →nosniff
X-Request-ID →18341eb6e5c7e5f483d8dd3a3a492b9c
Content-Encoding →gzip
更大的故事是我将主站点托管在不支持 PHP 的 firebase 上,因此我将 php 文件放在 000webhostapp.com 上作为解决方法。
解决方案
如果有人遇到类似问题的帖子,我的解决方案是仔细检查网址!!!
我发帖说我正在检查
https://sitename.000webhostapp.com/
当我应该参考
https://sitename.000webhostapp.com/php/mail.php
感谢@Phil 和@emix 强迫我检查细节。
推荐阅读
- c++ - 为什么这个错误会变成(C2664 error c++ Visual Studio)
- jar - 如何使用 java 11 在类路径中动态加载 jar
- typescript - 具有不同值的对象的打字稿副本。推断部分论点
- c# - OpenXML - Excel - 遍历并将值写入空单元格
- google-cloud-platform - Google 数据融合执行错误“INVALID_ARGUMENT:‘DISKS_TOTAL_GB’配额不足。请求的 3000.0,可用的 2048.0。”
- excel - 如何将 Access 报表(包括子报表)保存为 Excel 兼容文件和可读 PDF?
- video-editing - MLT 框架。使用模糊进行滑动过渡
- ios - 在 WKWebview 中突出显示文本时发生 JavaScript 异常
- overpass-api - 将数据导入 Overpass API 时未找到关系方式
- android - 从 Firestore 数据库中改组文档/字段