0
Эта скрипка отлично работает в Chrome, но не в Firefox: http://jsfiddle.net/u5pugnbn/CORS запрос не будет работать в Firefox, работает в Chrome и Safari
index.html
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<input type="button" value="Get Data" onclick="getData()"/>
<h1 id="output"></h1>
</body>
<script src ="main.js"></script>
</html>
main.js
var API_URL = "http://andr3w321.pythonanywhere.com";
function getData() {
var output = document.getElementById('output');
var xhr = new XMLHttpRequest();
var url = API_URL + "/hello";
xhr.open("GET", url, true);
xhr.onload = function (e) {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
output.innerHTML = xhr.responseText;
} else {
output.innerHTML = "Error: " + xhr.statusText;
}
}
};
xhr.onerror = function (e) {
output.innerHTML = "Error: " + xhr.statusText;
};
xhr.send();
}
файловый сервер бутылка
Python
from bottle import default_app, route, run, template, static_file, url, get, redirect, response, request
# allow requests from other domains
def enable_cors(fn):
def _enable_cors(*args, **kwargs):
# set CORS headers
response.headers['Access-Control-Allow-Origin'] = '*'
response.headers['Access-Control-Allow-Methods'] = 'GET, POST, PUT, OPTIONS'
response.headers['Access-Control-Allow-Headers'] = 'Origin, Accept, Content-Type, X-Requested-With, X-CSRF-Token'
if request.method != 'OPTIONS':
# actual request; reply with the actual response
return fn(*args, **kwargs)
return _enable_cors
@route('/hello', method=['OPTIONS', 'GET'])
@enable_cors
def hello():
return "hello"
application = default_app()
Загрузка статического index.html в домен и изменение Allow-Origin
от *
к определенному домену, похоже, не помогло.
Кажется, все в порядке. Каков предполагаемый результат? –
Заголовок h1 должен заполняться «привет», если запрос завершается успешно. Hmmm Я запускаю последний firefox 40.0.3 и только что обновлен от 39. Не уверен, что это повлияло. Как я уже сказал, это работает в Chromium для меня просто отлично, но не firefox. Это дало ошибку в консоли как зависание на 'xhr.open (« GET », url, true);' line. – user1071182
работает в 40.0.3 (окна) и 42.0, если на то пошло –