Ошибка Access-Control-Allow-Origin на сервере AWS при открытии веб-сайта через www
В браузере, когда я открываю свой веб-сайт, набирая только mywebsite.com, запрос ajax успешно попадает на мой остальной веб- сервис. Но когда я набираю www.mywebsite.com, я получаю сообщение об ошибке, так как XMLHttpRequest не может загрузить http://mywebsite.com/path Ответ на предварительный запрос не проходит проверку контроля доступа: Нет Access-Control-Allow-Origin. заголовок присутствует на запрашиваемом ресурсе. Происхождение " http://www.mywebsite.com/ " поэтому не допускается.
Ajax-запрос Jquery - это
вернуть $.ajax ({url: " http://mywebsite.com/path/ ", введите: "POST",
Веб-сайт развернут на сервере AWS, ниже приведены настройки CORS.
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<ExposeHeader>x-amz-server-side-encryption</ExposeHeader>
<ExposeHeader>x-amz-request-id</ExposeHeader>
<ExposeHeader>x-amz-id-2</ExposeHeader>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Я не могу найти решение, почему добавление www создает проблему.
1 ответ
Оказывается, ваш сайт не на Amazon S3, поэтому я не уверен, почему вы показали пример редактирования конфигурации CORS в корзине S3.
Ваш сайт фактически работает на Apache Coyote на сервере EC2.
Актуальная проблема здесь в вашем javascript. В файле MarketProfile.js
у вас есть несколько строк, как бы минимально запутанных, используя hex.
return $.ajax({url:"
\x68\x74\x74\x70\x3A\x2F\x2F\x62\x72\x65\x61\x6B\x69\x6E\x67\x74\x72\x61\x64
\x65\x2E\x63\x6F\x6D\x2F\x72\x65\x73\x74\x2F\x72\x65\x73\x74\x2F\x63\x6F\x6D
\x62\x69\x6E\x65\x64
Это эквивалентно этому:
http://breakingtrade.com/rest/rest/combined
Когда вы загружаете это с основного веб-сайта, это не перекрестное происхождение. Когда вы загружаете его с сайта www, это перекрестный запрос, потому что имя хоста другое.
Исправить это должно быть так же просто, как сделать url
быть простым абсолютным путем, указав только '/rest/rest/combined'
для этой строки, а не в том числе 'http://breakingtrade.com'
в начале строки.
В противном случае вам нужно будет выяснить, как заставить ваш сервер или, по крайней мере, этот конкретный ресурс возвращать заголовки CORS... но если вы сделаете это, конечно, вы захотите выбрать, какие источники разрешены, если только вы хотите, чтобы другие люди, использующие ваш сервер, добавляли данные на свои веб-сайты (что может произойти гораздо проще, если вы разрешите любому сайту делать запросы из разных источников).