Я знаю, что есть множество похожих сообщений на эту тему, но я был на этом почти полный рабочий день в течение двух дней и пробовал и читал о любом возможном решении, которое я мог найти.Ни один из них не сработал, поэтому я пытаюсь выяснить, есть ли у другого эксперта идея, которая может сработать.
Я пытаюсь вызвать скрипт PHP на (вымышленном) вебсайтах с сайта websitedojo.com.Это делается с помощью вызова AJAX и отлично работает на нативном URL.
Я переношу программу, но хочу оставить внутренние сценарии на нативном / исходном URL.Я получаю сообщение об ошибке, которая хорошо известна и широко распространена:
Не удалось загрузить https://websiteshop.net/cl/ajax-tst.php: Заголовок 'Access-Control-Allow-Origin' содержит несколько значений 'https://websitedojo.com, * ', но разрешен только один.Следовательно, доступ к источнику 'https://websitedojo.com' не разрешен.
Plus, после щелчка по полю предупреждения:
Блокировка перекрестного чтения-блокировки (CORB) блокируется перекрестным-оригинальный ответ https://websiteshop.net/cl/ajax-tst.php с приложением MIME-типа / json.См. https://www.chromestatus.com/feature/5629709824032768 для более подробной информации.
Я уже столько раз проверял, что это сводит меня с ума.Ниже части вызова AJAX, я попробовал все виды вариаций и комбинаций здесь.Что бы ни комментировали, я пробовал также без комментариев, конечно:
AJAX:
$.ajax({
url: "https://websiteshop.net/cl/ajax_tst.php", // Url to which the request is send
// headers:{
// "Access-Control-Allow-Origin": "*"
// },
type: "POST", // Type of request to be send, called as method
data: new FormData(this), // Data sent to server, a set of key/value pairs (i.e. form fields and values)
//data: data,
crossOrigin: true,
dataType: 'jsonp',
contentType: false, // The content type used when sending data to the server.
cache: false, // To unable request pages to be cached
processData: false, // To send DOMDocument or non processed data file it is set to false
success: function (data) // A function to be called if request succeeds
{
...
В htaccess я пробовал все комбинации, подобные этим и другим:
Options -Indexes
Header set Access-Control-Allow-Origin "https://websitedojo.com, *"
#<IfModule mod_headers.c>
# SetEnvIf Origin "http(s)?://(www\.)?(websitedojo.com|other.nl)$" AccessControlAllowOrigin=$0$1
# Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
# Header set Access-Control-Allow-Credentials true
#</IfModule>
В самом файле PHP я попробовал эти комбинации (также без https://):
header_remove('Access-Control-Allow-Origin');
// header('Access-Control-Allow-Origin: "https://websitedojo.com, *');
$allowed=array('https://websitedojo.com','https://www.websitedojo.com', 'https://websiteshop.net','http://localhost','http://127.0.0.1');
$origin=isset($_SERVER['HTTP_ORIGIN'])?$_SERVER['HTTP_ORIGIN']:$_SERVER['HTTP_HOST'];
if(in_array($origin, $allowed)){
header('Access-Control-Allow-Origin: '.$origin);
}else{
exit(0);
}
header('Access-Control-Allow-Methods: POST, OPTIONS, GET, PUT');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Headers: Authorization, X-Requested-With');
header('P3P: CP="NON DSP LAW CUR ADM DEV TAI PSA PSD HIS OUR DEL IND UNI PUR COM NAV INT DEM CNT STA POL HEA PRE LOC IVD SAM IVA OTC"');
header('Access-Control-Max-Age: 1');
Это последний результат из заголовков.
Requestheaders:
Host: websiteshop.net
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0
Accept: */*
Accept-Language: nl,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate, br
Referer: https://websitedojo.com/websiteshop/dynamic-and-crazy-engagement/
Content-Type: multipart/form-data; boundary=---------------------------23129260416654
Content-Length: 297094
Origin: https://websitedojo.com
Connection: keep-alive
Ответ:
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 16 Oct 2018 10:53:37 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.6.37
Access-Control-Allow-Origin: https://websitedojo.com
Access-Control-Allow-Methods: POST, OPTIONS, GET, PUT
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Authorization, X-Requested-With
P3P: CP="NON DSP LAW CUR ADM DEV TAI PSA PSD HIS OUR DEL IND UNI PUR COM NAV INT DEM CNT STA POL HEA PRE LOC IVD SAM IVA OTC"
Access-Control-Max-Age: 1
Vary: User-Agent
Access-Control-Allow-Origin: *
Content-Encoding: gzip
Могу ли я попробовать какие-либо вещи, не связанные с сервером? Или я могу запустить команду SSH, чтобы просмотреть настройки сервера для необходимых настроек?