Заголовок "Access-Control-Allow-Origin" отсутствует в запрошенной ошибке ресурса



Я пытаюсь получить ленту новостного сайта. Думал, что я использую API-интерфейс Google для преобразования канала feedburner в json. Следующий url-адрес вернет 10 сообщений из ленты в формате json. http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&q=http://feeds.feedburner.com/mathrubhumi



я использовал следующий код, чтобы получить содержимое выше url



$.ajax({
type:"GET",
dataType:"jsonp",
url:"http://ajax.googleapis.com/ajax/services/feed/load",
data:{"v":"1.0", "num":"10", "q":"http://feeds.feedburner.com/mathrubhumi"},

success: function(result){
//.....
}
});


но это не работает и я получаю следующее ошибка




XMLHttpRequest не удается загрузить
http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=10&q=http%3A%2F%2Ffeeds.feedburner.com%2Fmathrubhumi.
В запрошенном заголовке отсутствует заголовок " Access-Control-Allow-Origin
ресурс. Происхождение'http://localhost', следовательно, не разрешен доступ.




Как это исправить?

663   7  

7 ответов:

Я считаю, что это, вероятно, может быть, что Chrome не поддерживает localhost пройти Access-Control-Allow-Origin-- см. выпуск Chrome

в браузере Chrome отправить Access-Control-Allow-Origin в заголовке, просто псевдоним вашего localhost в вашем файле / etc / hosts на какой-то другой домен, например:

127.0.0.1   localhost yourdomain.com

тогда, если бы вы получили доступ к своему скрипту с помощью yourdomain.com вместо localhost, вызов должен завершиться успешно.

Если вы используете браузер Google Chrome вы можете взломать с расширением.

вы можете найти расширение для Chrome это изменит заголовки CORS на лету в вашем приложении. Очевидно, что это только Chrome, но мне нравится, что он работает с нулевыми изменениями в любом месте.

вы можете использовать его для отладки приложения на локальной машине (если все работает в производстве).

обратите внимание: Если URL-адрес становится сломанным, имя расширения Access-Control-Allow-Origin:*. Я рекомендую Вам отключить это расширение, когда вы не работаете над своим материалом, потому что, например, youtube не работает с этим расширением.

попробуйте это-установить Ajax вызов, установив заголовок следующим образом:

var uri = "http://localhost:50869/odata/mydatafeeds"
$.ajax({
    url: uri,
    beforeSend: function (request) {
        request.setRequestHeader("Authorization", "Negotiate");
    },
    async: true,
    success: function (data) {
        alert(JSON.stringify(data));
    },
    error: function (xhr, textStatus, errorMessage) {
        alert(errorMessage);
    }                
});

затем запустите свой код, открыв Chrome со следующей командной строкой:

chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security

просто FYI, я заметил эту информацию из документации jQuery, которая, как я считаю, относится к этой проблеме:

из-за ограничений безопасности браузера, большинство запросов "Ajax" подлежат та же политика происхождения; запрос не может успешно извлечь данные из другого домена, поддомена, порта или протокола.

изменение файла hosts, например @thanix, не сработало для меня, но расширение, упомянутое @dkruchok, решило проблему проблема.

вы также можете установить это расширение, если вы находитесь на Хром.

Access-Control-Allow-Origin: *

Chrome не позволяет интегрировать два разных localhost,поэтому мы получаем эту ошибку. Вам просто нужно включить основной пакет Microsoft Visual Studio Web Api от NuGet manager.И добавьте две строки кода в проект WebApi в вашем .

var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);

затем все сделали.

пожалуйста, используйте @CrossOrigin на backendside в Spring boot controller (либо уровень класса, либо уровень метода) в качестве решения для ошибки Chrome 'No 'Access-Control-Allow-Origin' заголовок присутствует на запрашиваемый ресурс.-

это решение работает для меня 100% ...

пример: класс level

@CrossOrigin
@Controller
public class UploadController {

----- или -------

пример: метод level

@CrossOrigin(origins = "http://localhost:3000", maxAge = 3600)
@RequestMapping(value = "/loadAllCars")
    @ResponseBody
    public List<Car> loadAllCars() {


Ref: https://spring.io/blog/2015/06/08/cors-support-in-spring-framework

Comments

    Ничего не найдено.