Подтвердить что ты не робот

Заголовок 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).

4b9b3361

Ответ 1

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

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

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

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

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

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

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

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

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

Access-Control-Allow-Origin : *

ИЛИ ЖЕ

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

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

Ответ 2

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

dataType: "jsonp",

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

type: 'GET',

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

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

Ответ 3

Вам необходимо изменить код на стороне сервера, как указано ниже

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");

  }
}

Ответ 4

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

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

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

Ответ 5

На стороне сервера поместите это поверх .php:

 header('Access-Control-Allow-Origin: *');  

Вы можете установить определенные ограничения доступа к домену:

header('Access-Control-Allow-Origin: https://www.example.com')

Ответ 6

Ваш браузер не позволяет ваш запрос.. вам нужно установить на свой веб-браузер

Для Chrome: https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en

Для Firefox https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/

Лучший способ вы можете добавить заголовок на стороне сервера

Access-Control-Allow-Origin: *