it-swarm.com.ru

Отсутствует заголовок CORS "Access-Control-Allow-Origin"

Я вызываю эту функцию из формы asp.net и получаю следующую ошибку на консоли firebug при вызове ajax.

Блокировка перекрестного запроса: та же политика происхождения запрещает чтение удаленного ресурса по адресу http: //anotherdomain/test.json . (Причина: отсутствует заголовок CORS «Access-Control-Allow-Origin»).

var url= 'http://anotherdomain/test.json';
        $.ajax({
            url: url,
            crossOrigin: true,
            type: 'GET',
            xhrFields: { withCredentials: true },
            accept: 'application/json'
        }).done(function (data) {
            alert(data);                
        }).fail(function (xhr, textStatus, error) {
            var title, message;
            switch (xhr.status) {
                case 403:
                    title = xhr.responseJSON.errorSummary;
                    message = 'Please login to your server before running the test.';
                    break;
                default:
                    title = 'Invalid URL or Cross-Origin Request Blocked';
                    message = 'You must explictly add this site (' + window.location.Origin + ') to the list of allowed websites in your server.';
                    break;
            }
        });

Я сделал альтернативный путь, но все еще не может найти решение.

Примечание. У меня нет прав на сервере для внесения изменений на стороне сервера (API/URL).

44
Mayank Modi

Обычно это происходит при попытке доступа к ресурсам другого домена.

Это функция безопасности, позволяющая избежать свободного доступа всех пользователей к любым ресурсам этого домена (к ним можно получить доступ, например, чтобы иметь точно такую ​​же копию вашего сайта в пиратском домене).

Заголовок ответа, даже если он составляет 200OK, не позволяет другим источникам (доменам, портам) получать доступ к ресурсам.

Вы можете решить эту проблему, если вы являетесь владельцем обоих доменов:

Решение 1: через .htaccess

Чтобы изменить это, вы можете записать это в .htaccess запрошенного домена file:

    <IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
    </IfModule>

Решение 2: правильно установить заголовки

Если вы установите это в заголовке ответа запрашиваемого файла, вы разрешите всем иметь доступ к ресурсам:

Access-Control-Allow-Origin : *

OR

Access-Control-Allow-Origin : http://www.my-domain.com

Мир и кодекс;)

40
Sébastien Garcia-Roméo

в вашем запросе ajax, добавив:

dataType: "jsonp",

после строки:

type: 'GET',

должен решить эту проблему .. 

надеюсь, это поможет вам

7
Pegasus Cozza

Вы должны изменить свой код на стороне сервера, как указано ниже

public class CorsResponseFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext requestContext,   ContainerResponseContext responseContext)
    throws IOException {
        responseContext.getHeaders().add("Access-Control-Allow-Origin","*");
        responseContext.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");

  }
}
2
Ritesh Kumar

Вы, должно быть, поняли, почему у вас возникла эта проблема после прохождения вышеупомянутых ответов.

self.send_header('Access-Control-Allow-Origin', '*')

Вам просто нужно добавить вышеуказанную строку на стороне вашего сервера.

0
Raghvendra Singh