【发布时间】:2018-10-28 21:35:07
【问题描述】:
所以我得到了这个页面,它加载了一堆数据,所以我使用了无限滚动。客户端 html 使用 jQuery 对服务器上的 PHP 文件执行 AJAX 请求。
该页面与服务器位于不同的域中,这就是需要 access-control-headers / allow-origin 的原因。
我没有测试它,它确实给出了以下错误:
预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段 X-Requested-With。
现在,当我在 PHP 文件中添加标题时,我得到了:
对预检请求的响应未通过访问控制检查:“Access-Control-Allow-Origin”标头包含多个值“域,*”,但只允许一个值。因此不允许原始“域”访问。
服务器端 PHP:
header('Access-Control-Allow-Origin: https://di.community');
header('Access-Control-Allow-Headers: X-Requested-With');
$start = $_GET['start'];
echo json_encode(array_slice($tokenData, $start, 500));
客户端:
$.ajax({
if (working == false) {
working = true;
type: "GET",
url: "serverdomain/data.php?start="+start,
processData: false,
contentType: "application/json",
data: '',
success: function(r) {
r = JSON.parse(r)
start += 500;
setTimeout(function() {
working = false;
}, 100)
},
error: function(r) {
console.log("Something went wrong!");
}
}
});
我已将客户端域名编辑为“域”。我只希望该特定域能够访问,这就是我不使用 *.我已将服务器域编辑为“serverdomain”。
是的,每当用户滚动到页面底部时,这个 AJAX 就会触发,这很有效。但是由于某种原因,当我添加标头时,它认为我为 Allow-Origin 标头设置了多个值。同样,这两个错误之间的唯一区别是将以下内容添加到 php 脚本中:
header('Access-Control-Allow-Origin: https://di.community');
header('Access-Control-Allow-Headers: X-Requested-With');
如果有人能指出为什么会发生这种情况,我将不胜感激:P。
编辑:我检查了可能的重复项。这不是同一个问题,但它的最佳答案建议使用 .htaccess 来获得想要的结果,这导致我检查 .htaccess 以查看它是否与我的多值错误有关,并且确实如此。 :) 现已修复,谢谢 Nico
【问题讨论】:
标签: php jquery ajax cors request-headers