Не могу заставить CORS работать в Chrome и Firefox
Здравствуйте, я пытаюсь ajax кросс-доменный вызов, но есть проблема с заголовками. Я следовал многим урокам, но я просто не могу заставить его работать.
Вот как далеко я пошел:
<html>
<head>
<meta http-equiv="Access-Control-Allow-Origin" content="*">
</head>
<body>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js" ></script>
<script>
jQuery.support.cors = true;
$(document).ready(function() {
//this would be done in a common script file if you are going to
//make a lot of these calls
$.ajaxSetup({ type: 'POST', dataType: 'json', contentType: 'application/json', data: {} });
$('#btn').click(function() {
//call the web service with the button is clicked
$.ajax({ url: 'url_external',
data: '{ "some_data:data" }', //ensure the data is enclosed in a quote
success: function (data) {
alert('here...success');
},
complete: function (data) {
alert('here');
}
});
//return false to avoid a postback
return false;
});
});
</script>
<div>
<button id='btn'>Load It</button>
<div id='sayit'></div>
</div>
</body>
</html>
И это работает только в IE9. Я что-то пропустил? В Mozilla Firefox и Google Chrome есть проблема с настройками, а метод 405 не разрешен
1 ответ
Добавьте это ко всем вашим ответам HTTP на 'url_external'
сервер:
<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE');
header('Access-Control-Allow-Headers', 'Content-Type');
Это включает запросы CORS Ajax на ваш url_external
сервер.
Вы, вероятно, хотели бы настроить это на...
header('Access-Control-Allow-Origin: http://yourdomain.com');
... чтобы разрешать только запросы CORS, поступающие только с вашего домена.
Лучшая информация, которую я нашел о CORS: Использование CORS.