Я знаю, что есть много других статей по этой теме, но, к сожалению, ни один из решений не работал для меня.Запрос на перекрестный запрос Заблокирован при отправке POST на api
Я запускаю linux red hat 7.2 с apache 2.4 (httpd). Я работаю на сервере напрямую как localhost. API основан на python, на котором у меня мало опыта - я загрузил программу из github mozilla http observatory.
Я пробовал разные настройки в течение нескольких часов и не добился прогресса в этом вопросе и теперь ищу дополнительную помощь.
Главная страница, прежде чем я на перед тем POST является http://localhost
Вот это JS (AJAX)
POST-XHR вызов на: http://localhost:57001/api/v1/scan
function loadTLSObservatoryResults(rescan, initiateScanOnly) {
'use strict';
var rescan = typeof rescan !== 'undefined' ? rescan : false;
var initiateScanOnly = typeof initiateScanOnly !== 'undefined' ? initiateScanOnly : false;
/*var SCAN_URL = 'https://tls-observatory.services.mozilla.com/api/v1/scan';
var RESULTS_URL = 'https://tls-observatory.services.mozilla.com/api/v1/results';
var CERTIFICATE_URL = 'https://tls-observatory.services.mozilla.com/api/v1/certificate';*/
var SCAN_URL = 'http://localhost:57001/api/v1/scan';
var RESULTS_URL = 'http://localhost:57001/api/v1/results';
var CERTIFICATE_URL = 'http://localhost:57001/api/v1/certificate';
// if it's the first scan through, we need to do a post
if (Observatory.state.third_party.tlsobservatory.scan_id === undefined || rescan) {
// make a POST to initiate the scan
$.ajax({
data: {
rescan: rescan,
target: Observatory.hostname
},
initiateScanOnly: initiateScanOnly,
dataType: 'json',
method: 'POST',
error: function() { errorResults('Scanner unavailable', 'tlsobservatory') },
success: function (data) {
Observatory.state.third_party.tlsobservatory.scan_id = data.scan_id;
if (this.initiateScanOnly) { return; }
loadTLSObservatoryResults(); // retrieve the results
},
url: SCAN_URL
});
Здесь является моим httpd.conf
basicall у только что включили эту строку: LoadModule headers_module modules/mod_headers.so
Вот мой файл .htaccess:
RewriteEngine On
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header always set Access-Control-Max-Age "1000"
Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]
Я перезапуске Apache, но я вижу такое же предупреждение в консоли разработчика:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:57001/api/v1/scan. (Reason: CORS header 'Access-Control-Allow-Origin' missing).
почему 'python' там есть? –