所以我得到了这个加载大量数据的页面,因此我使用无限滚动。客户端html使用jQuery对服务器上的PHP文件执行AJAX请求。
该页面与服务器位于不同的域,这就是需要access-control-headers / allow-origin的原因。
我没有测试它,它确实给出了以下错误:
请求标头字段X-Requested-With在预检响应中不允许使用Access-Control-Allow-Headers。
现在,当我在PHP文件中添加标题时,我得到了这个:
对预检请求的响应未通过访问控制检查:“访问控制 - 允许 - 来源”'标头包含多个值'域,*',但只允许一个。起源'域名'因此不允许访问。
服务器端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
答案 0 :(得分:0)
感谢Nico Haase的评论,我查看了.htaccess,其中包含以下几行:
[Authorize]
哪个解释了错误。删除这个并不明智,它与wordpress相关,我觉得我可能会破坏一些需要它的东西。
所以我现在所做的就是在PHP中设置它:
<FilesMatch "\.(php)$">
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
</FilesMatch>
在.htaccess中触发添加Allow-Origin标头的内容。
现在有效!愚蠢的我没想到.htaccess与此有关。