Вопросы по тегу: cors

(15)

XMLHttpRequest не может загрузить XXX Нет заголовка «Access-Control-Allow-Origin»

тл;др; Об одинаковой политике происхожденияУ меня есть процесс Grunt, который инициирует экземпляр сервера express.js. Это работало абсолютно нормально до сих пор, когда он начал обслуживать пустую страницу со следующим, появившимся в журнале ошибок в консоли разработчика в Chrome (последняя версия): XMLHttpRequest не может загрузиться https://www.example.com/ Заголовок Access-Control-Allow-Origin отсутствует в запрошенном ресурс. Следовательно, доступ к источнику 'http://localhost:4300' запрещен. Что мешает мне зайти на страницу?
P

Peter David Carter

6 лет назад

Ответов: 11

Chrome не отображает запросы OPTIONS на вкладке «Сеть»

Мое приложение веб-клиента устанавливает запросы HTTP POST через API выборки.Я вижу, что предварительные запросы OPTIONS отправляются через прокси-сервер отладки (Charles Proxy), но они не отображаются на вкладке Инструменты разработчика Google Chrome\Сеть.У меня нет настроек фильтров на вкладке сети. Я помню, что запросы OPTIONS были видны там, но не больше. Как их вернуть?
U

Ubeogesh

2 года назад

Ответов: 4

Spring CORS No 'Access-Control-Allow-Origin' header is present

I am getting the following problem after porting web.xml to java config No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:63342' is therefore not allowed access. Based on a few Spring references, the following attempt has been tried: @Configuration @ComponentScan(basePackageClasses = AppConfig.class, useDefaultFilters = false, includeFilters = { @Filter(org.springframework.stereotype.Controller.class) }) @EnableWebMvc public class WebConfig extends WebMvcConfigurerAdapter { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/*").allowedOrigins("*").allowedMethods("GET", "POST", "OPTIONS", "PUT") .allowedHeaders("Content-Type", "X-Requested-With", "accept", "Origin", "Access-Control-Request-Method", "Access-Control-Request-Headers") .exposedHeaders("Access-Control-Allow-Origin", "Access-Control-Allow-Credentials") .allowCredentials(true).maxAge(3600); } } The values chosen were taken from a working web.xml filter: CorsFilter org.apache.catalina.filters.CorsFilter cors.allowed.origins * cors.allowed.methods GET,POST,HEAD,OPTIONS,PUT cors.allowed.headers Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers cors.exposed.headers Access-Control-Allow-Origin,Access-Control-Allow-Credentials cors.support.credentials true cors.preflight.maxage 10 CorsFilter /* Any ideas why the Spring java config approach is not working like the web.xml file did?
I

Ian Mc

6 лет назад

Ответов: 14

Как настроить CORS в приложении Spring Boot + Spring Security?

Я использую Spring Boot с поддержкой Spring Security и Cors.Если я выполню следующий код url = 'http://localhost:5000/api/token' xmlhttp = new XMLHttpRequest xmlhttp.onreadystatechange = -> if xmlhttp.readyState is 4 console.log xmlhttp.status xmlhttp.open "GET", url, true # xmlhttp.setRequestHeader "X-Requested-With", "XMLHttpRequest" xmlhttp.setRequestHeader 'Authorization', 'Basic ' + btoa 'a:a' do xmlhttp.send В результате получаю200 Если я тестирую с неправильными учетными данными, такими какurl = 'http://localhost:5000/api/token' xmlhttp = new XMLHttpRequest xmlhttp.onreadystatechange = -> if xmlhttp.readyState is 4 console.log xmlhttp.status xmlhttp.open "GET", url, true # xmlhttp.setRequestHeader "X-Requested-With", "XMLHttpRequest" xmlhttp.setRequestHeader 'Authorization', 'Basic ' + btoa 'a:aa' do xmlhttp.send вместо получения 401 (это стандартный код для неправильной аутентификации в весенней безопасности) я получаю0 со следующим уведомлением браузера:GET http://localhost:5000/API/токенXMLHttpRequest не может загрузить http://localhost:5000. В запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin». Таким образом, источник 'http://localhost:3000' не имеет доступа. В ответе был код состояния HTTP 401.Я разрабатываю интерфейсный код, которому нужны полезные коды состояния http из ответов сервера, чтобы справиться с ситуацией. Мне нужно что-то более полезное, чем 0. Также тело ответа пусто. Я не знаю, то ли моя конфигурация неверна, то ли это программная ошибка, и я также не знаю, где, если это хром (с использованием Arch Linux) или Spring Security.Моя конфигурация Spring:@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } @RestController @RequestMapping("api") public class Controller { @RequestMapping("token") @CrossOrigin Map token(HttpSession session) { return Collections.singletonMap("token", session.getId()); } } @EnableWebSecurity public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter { @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication().withUser("a").password("a").roles("USER"); } @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .requestMatchers(CorsUtils::isPreFlightRequest).permitAll() .anyRequest().authenticated() .and().httpBasic(); } } Если я тестирую с помощью curl, все работает идеально, я думаю, потому что поддержка CORS не требуется, но я попытался смоделировать CORS с запросами OPTION, и результат также был в порядке.$ curl -v localhost:5000/api/token -H "Authorization: Basic YTpha" * Trying ::1... * Connected to localhost (::1) port 5000 (#0) > GET /api/token HTTP/1.1 > Host: localhost:5000 > User-Agent: curl/7.48.0 > Accept: */* > Authorization: Basic YTpha > и с неправильными учетными данными:$ curl -v localhost:5000/api/token -H "Authorization: Basic YTp" * Trying ::1... * Connected to localhost (::1) port 5000 (#0) > GET /api/token HTTP/1.1 > Host: localhost:5000 > User-Agent: curl/7.48.0 > Accept: */* > Authorization: Basic YTp > Редактировать: Во избежание недоразумений. Я использую 1.3.3 Spring Boot. Сообщение в блоге пишет: Поддержка CORS будет доступна в следующем выпуске Spring Boot 1.3 и уже доступна в сборках 1.3.0.BUILD-SNAPSHOT. Использование конфигурации CORS метода контроллера с аннотациями @CrossOrigin в приложении Spring Boot не требует какой-либо специальной настройки. Глобальную конфигурацию CORS можно определить, зарегистрировав bean-компонент WebMvcConfigurer с помощью настраиваемого метода addCorsMappings(CorsRegistry): Я добавил следующий код, чтобы включить глобальную поддержку Cors. на самом деле я пробовал это раньше, но результат был таким же. Я попробовал это снова недавно, и результат тот же.@Configuration public class MyConfiguration { @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurerAdapter() { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**"); } }; } } Идея о том, что проблема возникает из-за перенаправления между процессами авторизации, интересна. как я могу изменить перенаправление на любые ресурсы, чтобы избежать этого конфликта?РЕДАКТИРОВАТЬ:Думаю, я ближе к решению. Я протестировал свой сервер nodejs, который без проблем поддерживает cors, добавив Доступ-Контроль-Разрешить-Происхождение: * на все запросы.Как уже упоминал Стефан Изеле, похоже, что Spring Security перенаправляет или не добавляет заголовок CORS, поэтому запрос кажется нарушенным. Поэтому, пока Spring Security проверяет аутентификацию, она должна добавить правильный заголовок.Кто-нибудь знает, как это сделать?РЕДАКТИРОВАТЬ:Я нашел обходной путь, который кажется уродливым. Я начал выпуск github для весенней загрузки, где я описываю обходной путь: https://github.com/spring-projects/spring-boot/issues/5834
R

Rudolf Schmidt

6 лет назад

Ответов: 19

Enabling CORS in Cloud Functions for Firebase

I'm currently learning how to use new Cloud Functions for Firebase and the problem I'm having is that I can't access the function I wrote through an AJAX request. I get the "No 'Access-Control-Allow-Origin'" error. Here's an example of the function I wrote:exports.test = functions.https.onRequest((request, response) => { response.status(500).send({test: 'Testing functions'}); }) The function sits in this url: https://us-central1-fba-shipper-140ae.cloudfunctions.net/testFirebase docs suggests to add CORS middleware inside the function, I've tried it but it's not working for me: https://firebase.google.com/docs/functions/http-eventsThis is how I did it:var cors = require('cors'); exports.test = functions.https.onRequest((request, response) => { cors(request, response, () => { response.status(500).send({test: 'Testing functions'}); }) }) What am I doing wrong? I would appreciate any help with this.UPDATE:Doug Stevenson's answer helped. Adding ({origin: true}) fixed the issue, I also had to change response.status(500) to response.status(200) which I completely missed at first.
A

Andrey Pokrovskiy

5 лет назад

Ответов: 29

Firebase Storage и Access-Control-Allow-Origin

Я пытаюсь загрузить файлы из Firebase Storage через XMLHttpRequest, но Access-Control-Allow-Origin не установлен на ресурсе, поэтому это невозможно. Есть ли способ установить этот заголовок на сервере хранения? (let [xhr (js/XMLHttpRequest.)] (.open xhr "GET" url) (aset xhr "responseType" "arraybuffer") (aset xhr "onload" #(js/console.log "bin" (.-response xhr))) (.send xhr))) Сообщение об ошибке Chrome: XMLHttpRequest не загружается https://firebasestorage.googleapis.com/[ИЗМЕНИТЬ] Заголовок Access-Control-Allow-Origin отсутствует в запрошенном ресурс. Следовательно, источник 'http://localhost: 3449' недопустим. доступ.
B

Blacksad

6 лет назад

Ответов: 4

Блокировка чтения из разных источников (CORB)

Я вызвал сторонний API с помощью JQuery AJAX. В консоли появляется следующая ошибка: Cross-Origin Read Blocking (CORB) заблокировал перекрестный ответ MY URL с типом MIME application / json. Подробнее см. https://www.chromestatus.com/feature/5629709824032768. Я использовал следующий код для вызова Ajax: $.ajax({ type: 'GET', url: My Url, contentType: 'application/json', dataType:'jsonp', responseType:'application/json', xhrFields: { withCredentials: false }, headers: { 'Access-Control-Allow-Credentials' : true, 'Access-Control-Allow-Origin':'*', 'Access-Control-Allow-Methods':'GET', 'Access-Control-Allow-Headers':'application/json', }, success: function(data) { console.log(data); }, error: function(error) { console.log("FAIL....================="); } }); Когда я зарегистрировался в Fiddler, я получил данные в ответ, но не в методе успеха Ajax.Помогите, пожалуйста.
J

Jignesh

4 года назад

Ответов: 15

Как включить CORS в Django REST Framework

Как я могу включить CORS в моей Django REST Framework? ссылка не очень помогает, в ней написано, что я могу сделать это с помощью промежуточного программного обеспечения, но как я могу это сделать?
J

Julio Marins

6 лет назад

Ответов: 10

CORS с почтальоном

Эту тему задавали пару раз, но я до сих пор чего-то не понимаю:Когда читаю ответы про Нет заголовка 'Access-Control-Allow-Origin' проблема, в нем говорится, что на запрошенном сервере необходимо установить параметр, чтобы разрешить перекрестный домен: add_header 'Access-Control-Allow-Origin' '*';.Но, пожалуйста, скажите мне, почему при запросе от почтальона (который является клиентом) он работает как шарм, и у меня есть ответ от запрошенного сервера?Спасибо
I

IsraGab

6 лет назад

Ответов: 6

Что такое непрозрачный ответ и для чего он служит?

Я попытался получить URL-адрес старого веб-сайта, и произошла ошибка:Fetch API cannot load http://xyz. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://abc' is therefore not allowed access. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled. Я понял сообщение и попытался выполнить запрос, который возвращает непрозрачный ответ:fetch("http://xyz", {'mode': 'no-cors'}) Хорошо, теперь работает ... но я не могу это прочитать. = \Для чего тогда непрозрачный ответ?
M

Miguel Angelo

6 лет назад

Ответов: 4

Set cookies for cross origin requests

How to share cookies cross origin? More specifically, how to use the Set-Cookie header in combination with the header Access-Control-Allow-Origin?Here's an explanation of my situation:I am attempting to set a cookie for an API that is running on localhost:4000 in a web app that is hosted on localhost:3000. It seems I'm receiving the right response headers in the browser, but unfortunately they have no effect. These are the response headers:HTTP/1.1 200 OK Access-Control-Allow-Origin: http://localhost:3000 Vary: Origin, Accept-Encoding Set-Cookie: token=0d522ba17e130d6d19eb9c25b7ac58387b798639f81ffe75bd449afbc3cc715d6b038e426adeac3316f0511dc7fae3f7; Max-Age=86400; Domain=localhost:4000; Path=/; Expires=Tue, 19 Sep 2017 21:11:36 GMT; HttpOnly Content-Type: application/json; charset=utf-8 Content-Length: 180 ETag: W/"b4-VNrmF4xNeHGeLrGehNZTQNwAaUQ" Date: Mon, 18 Sep 2017 21:11:36 GMT Connection: keep-alive Furthermore, I can see the cookie under Response Cookies when I inspect the traffic using the Network tab of Chrome's developer tools. Yet, I can't see a cookie being set in in the Application tab under Storage/Cookies. I don't see any CORS errors, so I assume I'm missing something else.Any suggestions?Update I:I'm using the request module in a React-Redux app to issue a request to a /signin endpoint on the server. For the server I use express.Express server:res.cookie('token', 'xxx-xxx-xxx', { maxAge: 86400000, httpOnly: true, domain: 'localhost:3000' }) Request in browser:request.post({ uri: '/signin', json: { userName: 'userOne', password: '123456'}}, (err, response, body) => { // doing stuff })Update II:I am setting request and response headers now like crazy now, making sure that they are present in both the request and the response. Below is a screenshot. Notice the headers Access-Control-Allow-Credentials, Access-Control-Allow-Headers, Access-Control-Allow-Methods and Access-Control-Allow-Origin. Looking at the issue I found at Axios's github, I'm under the impression that all required headers are now set. Yet, there's still no luck...
P

Pim Heijden

4 года назад

Ответов: 10

Как отфильтровать (скрыть) предполетные запросы в моей сети Dev Tools

Обычно отображаются оба вызова, предполетный и фактический запрос. Иногда это раздражает. Есть ли способ скрыть предполетные запросы?Или есть плагин для фильтрации определенных запросов по заголовкам?
J

John Smith

6 лет назад

Ответов: 2

Ответ на предполетный запрос не проходит проверку контроля доступа

Я получаю эту ошибку, используя ngResource для вызова REST API в Amazon Web Services: XMLHttpRequest не загружается http://server.apiurl.com: 8000 / с / логин? Login = facebook. Ответ на предполетный запрос не проходит проверку контроля доступа: Нет Заголовок Access-Control-Allow-Origin присутствует в запрошенном ресурс. Следовательно, к источнику 'http://localhost' доступ не разрешен. Ошибка 405 Сервис:socialMarkt.factory('loginService', ['$resource', function ($resource) { var apiAddress = "http://server.apiurl.com:8000/s/login/"; return $resource(apiAddress, { login: "facebook", access_token: "@access_token", facebook_id: "@facebook_id" }, { getUser: { method: 'POST' } }); }]); Контроллер:[...] loginService.getUser(JSON.stringify(fbObj)), function (data) { console.log(data); }, function (result) { console.error('Error', result.status); } [...] Я использую Chrome и не знаю, что еще делать, чтобы решить эту проблему. Я даже настроил сервер для приема заголовков от источника localhost.
A

Andre Mendes

6 лет назад

Ответов: 24

На запрошенном ресурсе отсутствует заголовок Access-Control-Allow-Origin - при попытке получить данные из REST API.

Я пытаюсь получить данные из REST API HP Alm. Он неплохо работает с небольшим скриптом curl - я получаю свои данные.Теперь сделать это с помощью JavaScript, fetch и ES6 (более или менее) кажется более серьезной проблемой. Я все время получаю это сообщение об ошибке: Не удается загрузить API-интерфейс Fetch. Ответ на предполетный запрос не пройти проверку контроля доступа: заголовок 'Access-Control-Allow-Origin' не присутствует на запрошенном ресурсе. Origin 'http://127.0.0.1: 3000' равно поэтому не разрешен доступ. Ответ имел код состояния HTTP 501. Если непрозрачный ответ соответствует вашим потребностям, установите режим запроса на 'no-cors' для выборки ресурса с отключенным CORS. Я понимаю, что это связано с тем, что я пытаюсь получить эти данные из своего локального хоста, и решение должно использовать CORS. Теперь я думал, что действительно это сделал, но почему-то он либо игнорирует то, что я пишу в заголовке, либо проблема в другом?Итак, есть проблема с реализацией? Я что делаю неправильно? К сожалению, я не могу проверить логи сервера. Я действительно немного застрял здесь.function performSignIn() { let headers = new Headers(); headers.append('Content-Type', 'application/json'); headers.append('Accept', 'application/json'); headers.append('Access-Control-Allow-Origin', 'http://localhost:3000'); headers.append('Access-Control-Allow-Credentials', 'true'); headers.append('GET', 'POST', 'OPTIONS'); headers.append('Authorization', 'Basic ' + base64.encode(username + ":" + password)); fetch(sign_in, { //mode: 'no-cors', credentials: 'include', method: 'POST', headers: headers }) .then(response => response.json()) .then(json => console.log(json)) .catch(error => console.log('Authorization failed : ' + error.message)); } Я использую Chrome. Я также пробовал использовать этот плагин Chrome CORS, но затем получаю другое сообщение об ошибке: Значение заголовка Access-Control-Allow-Origin в ответе не должен быть подстановочным знаком '*', когда режим учетных данных запроса 'включают'. Следовательно, источник 'http://127.0.0.1: 3000' не допускается. доступ. Режим учетных данных запросов, инициированных XMLHttpRequest управляется атрибутом withCredentials.
d

daniel.lozynski

5 лет назад

Ответов: 21

NodeJS-корсеты ничего не фильтруют

Я пытался следовать руководствам, которые я нашел здесь и здесь. Но, похоже, маршруты принимаются независимо от того, что: const config = require('config') const express = require('express') const cors = require('cors') const bodyParser = require('body-parser') const app = express() var corsOptions = { origin: 'https://example.com', optionsSuccessStatus: 200 // некоторые устаревшие браузеры (IE11, различные SmartTV) захлебываются на 204 } app.get('/test', function (req, res) { console.log(req.get('host')+'' - '+req.get('origin')) res.send('OK') }) app.get('/test2', cors(corsOptions), function (req, res) { console.log(req.get('host')+'' - '+req.get('origin')) res.send('OK2') }) // разбор application/x-www-form-urlencoded app.use(bodyParser.urlencoded({ extended: false })) // разбор приложения/json app.use(bodyParser.json()) app.get('/', function (req, res) { res.send('Hello World') }) app.listen(config.get('app.port')) Когда я ввожу URL в браузере или получаю его в консоли, в консоли появляется одна и та же строка: myAPIwebsite.com - undefined (myAPIwebsite.com - это место, где доступен API узла). Хотелось бы, чтобы /test работал из любого места, но /test2 только для запросов, приходящих с example.com. Кто-нибудь может мне помочь? Заранее спасибо :)
d

djcaesar9114

год назад

Ответов: 1

2022 WebDevInsider