Я использую .htaccess, чтобы переписать URL-адреса, и я использовал HTML-тег базы, чтобы он работал.
Теперь, когда я пытаюсь сделать ajax-запрос, я получаю следующую ошибку:
XMLHttpRequest не может загрузить
http://www.example.com/login.php
. В запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». Происхождение "http://example.com
" поэтому не допускается.
javascript
jquery
ajax
cors
xmlhttprequest
Th3lmuu90
источник
источник
http://wordicious.com
это другой домен, чемhttp://www.wordicious.com/
, следовательно, ошибка. Кстати, если он работает сейчас и вернулся сам, вы, вероятно, должны удалить вопрос.Ответы:
Использовать
addHeader
вместо использованияsetHeader
метода,*
в строке выше позволитaccess to all domains
.Для разрешения
access to specific domain only
:Проверьте это
blog post
.источник
Почему возникает ошибка:
Код JavaScript ограничен политикой одного источника , то есть, со страницы на
www.example.com
, вы можете только сделать (AJAX) запросы к службам , расположенным в точно том же домене, в этом случае, точноwww.example.com
( неexample.com
- безwww
- илиwhatever.example.com
).В вашем случае ваш Ajax-код пытается получить доступ к службе
http://wordicious.com
со страницы, расположенной по адресуhttp://www.wordicious.com
.Хотя они очень похожи, они не являются одним и тем же доменом. И когда они не находятся в одном домене, запрос будет успешным, только если в расположении цели есть
Access-Control-Allow-Origin
заголовок.Поскольку ваша страница / служба
http://wordicious.com
никогда не была настроена для представления такого заголовка, отображается это сообщение об ошибке.Решение:
Как уже говорилось, происхождение (где страница с JavaScript находится) и цель (где JavaScript пытается достичь) домены должны быть точным же.
Ваш случай кажется опечаткой. Похоже
http://wordicious.com
иhttp://www.wordicious.com
на самом деле это один и тот же сервер / домен. Таким образом , чтобы исправить, введите цель и происхождение одинаково: сделать вас Ajax запрос кода страницы / услуги , чтобыhttp://www.wordicious.com
неhttp://wordicious.com
. (Может быть, разместить целевой URL относительно, например'/login.php'
, без домена).На более общей ноте:
Если проблема не является опечаткой, подобной той, которая возникает в этом вопросе, решение было бы добавить
Access-Control-Allow-Origin
к целевому домену . Чтобы добавить его, зависит, конечно, от сервера / языка за этим адресом. Иногда переменная конфигурации в инструменте сделает свое дело. В других случаях вам придется добавлять заголовки через код самостоятельно.источник
Для сервера .NET это можно настроить в файле web.config, как показано ниже.
Например, скажем, если домен сервера - http://live.makemypublication.com, а клиент - http://www.makemypublication.com, то настройте его в файле web.config сервера, как показано ниже.
источник
Если вы получаете это сообщение об ошибке из браузера:
когда вы пытаетесь выполнить запрос Ajax POST / GET к удаленному серверу, который находится вне вашего контроля, забудьте об этом простом исправлении:
Что вам действительно нужно сделать, особенно если вы используете JavaScript только для выполнения Ajax-запроса, это внутренний прокси, который принимает ваш запрос и отправляет его на удаленный сервер.
Сначала в вашем JavaScript сделайте Ajax-вызов на ваш собственный сервер, например:
Затем создайте простой файл PHP с именем proxy.php, чтобы обернуть данные POST и добавить их на удаленный URL-сервер в качестве параметров. Я приведу пример того, как обойти эту проблему с помощью API поиска отелей Expedia:
При выполнении:
Вы просто делаете тот же запрос, но на стороне сервера, и после этого он должен работать нормально.
источник
Вы должны добавить это в начале вашей php-страницы "login.php"
источник
Вы должны поместить ключи / значения заголовков в ответ опции метода. например, если у вас есть ресурс по адресу http://mydomain.com/myresource, то в коде вашего сервера вы пишете
источник
В основном измените ответ заголовка API, добавив следующие дополнительные параметры.
Access-Control-Allow-Credentials: правда
Access-Control-Allow-Origin: *
Но это не очень хорошее решение, когда речь заходит о безопасности.
источник
Обходной путь - использовать обратный прокси-сервер, работающий на исходном хосте и перенаправляющий на целевой сервер, такой как Fiddler:
Ссылка здесь: http://docs.telerik.com/fiddler/configure-fiddler/tasks/usefiddlerasreverseproxy
Или обратный прокси-сервер Apache ...
источник
Добавьте это к вам файл PHP или основной контроллер
источник
header("Access-Control-Allow-Credentials: true");
Решено с помощью записи ниже в httpd.conf
источник
Pleaes находит функцию, используемую в XMLHTTPREQUEST в Javascript для настройки заголовков запроса.
Ссылка: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/setRequestHeader
источник