因此,我已经编码了一个终结点,该终结点以JSON格式打印出一些招聘广告。我将其称为 servicedomain.com 。像这样:
public function jobs() {
header('Access-Control-Allow-Origin: https://somedomain.com');
header('Access-Control-Allow-Credentials: true');
header('Content-type: application/json');
$xmlStr = file_get_contents('https://some.other.service/where/the_adverts_actually_are');
$xml = simplexml_load_string($xmlStr);
$json = array();
foreach ($xml->advert as $advert) {
$json[] = json_encode($advert);
}
echo '[' . implode(',', $json) . ']';
die();
}
在 somedomain.com 的最后,这是一段执行抓取操作的JavaScript:
$.fn.getDataFromUrl = function (url) {
var that = this;
$.get(url, function (response) {
$('[data-object="repeat"]', that).each(function () {
var template = $(this);
for (var i = 0; i < response.length; i++) {
var item = template.clone();
$('[data-html]', item).each(function () {
var key = $(this).data('html');
$(this).html(response[i][key]);
});
$('[data-attr]', item).each(function () {
var attr = $(this).data('attr');
var key = attr;
if ($(this).data('val')) {
key = $(this).data('val');
}
var prefix = $(this).data('prefix') ? $(this).data('prefix') : '';
$(this).attr(attr, prefix + response[i][key]);
});
template.after(item);
}
template.remove();
});
});
};
上面的JavaScript是从 servicedomain.com 获取的,与该问题顶部的PHP脚本相同。
所有这些在Firefox上都能很好地工作,但是后来我发现它在iOS Safari上不起作用。从谷歌搜索中,我推断出它在OS-X Safari中也不起作用。我已经看到了解决方案,但是我很难理解它们并将其应用于我的特定实现。我不确定我缺少什么或做错了什么。是我应该发送到servicedomain.com 的标头还是我应该从servicedomain.com发送回标题的标头?