Я пытаюсь отправить файлы на свой сервер с помощью почтового запроса, но при его отправке возникает ошибка:
Поле заголовка запроса Content-Type не разрешено Access-Control-Allow-Headers.
Итак, я погуглил ошибку и добавил заголовки:
$http.post($rootScope.URL, {params: arguments}, {headers: {
"Access-Control-Allow-Origin" : "*",
"Access-Control-Allow-Methods" : "GET,POST,PUT,DELETE,OPTIONS",
"Access-Control-Allow-Headers": "Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"
}
Тогда я получаю ошибку:
Поле заголовка запроса Access-Control-Allow-Origin не разрешено Access-Control-Allow-Headers
Таким образом, я погуглил это, и единственный подобный вопрос, который я мог найти, был обеспечен половинным ответом тогда закрытым как не по теме. Какие заголовки я должен добавить / удалить?
Ответы:
Сервер (что запрос POST отправляется) должно включать в себя
Access-Control-Allow-Headers
заголовок ( и т.д.) в своем ответе . Размещение их в вашем запросе от клиента не имеет никакого эффекта.Это связано с тем, что сервер должен указать, что он принимает запросы разных источников (и что он разрешает
Content-Type
заголовок запроса и т. Д.) - клиент не может решить для себя, что данный сервер должен разрешать CORS.источник
Content-Type
?У меня такая же проблема. В документации jQuery я нашел:
Таким образом, хотя сервер разрешает перекрестный запрос источника, но не разрешает
Access-Control-Allow-Headers
, он будет выдавать ошибки. По умолчанию используется угловой тип контентаapplication/json
, который пытается отправить запрос OPTION. Попробуйте перезаписать угловой заголовок по умолчанию или разрешитьAccess-Control-Allow-Headers
в конце сервера. Вот угловой образец:источник
or allow Access-Control-Allow-Headers in server end
как?header
для установки заголовка ответаЕсли это кому-нибудь поможет (даже если это плохо, так как мы должны разрешить это только для целей разработки), вот решение Java, так как я столкнулся с той же проблемой. [Редактировать] Не используйте подстановочный знак *, так как это плохое решение, используйте,
localhost
если вам действительно нужно, чтобы что-то работало локально.источник
Сервер (которому отправляется запрос POST) должен включить заголовок Content-Type в свой ответ.
Вот список типичных заголовков для включения, включая один пользовательский заголовок «X_ACCESS_TOKEN»:
Вот что должен настроить ваш http-сервер для веб-сервера, на который вы отправляете свои запросы.
Вы также можете попросить вашего сервера выставить заголовок «Content-Length».
Он распознает это как запрос общего доступа к ресурсам (CORS) и должен понимать последствия создания этих конфигураций сервера.
Подробнее см .:
источник
Вы можете активировать правильный заголовок в PHP с помощью этого:
источник
У меня работает nodejs:
источник
Заголовки, которые вы пытаетесь установить, являются заголовками ответа . Они должны быть предоставлены в ответе сервером, к которому вы обращаетесь.
Им не место на клиенте. Было бы бессмысленно иметь средства для предоставления разрешений, если бы они могли быть предоставлены сайтом, который запрашивал разрешение, а не сайтом, которому принадлежали данные.
источник
Если кто-то испытывает эту проблему с экспресс-сервером, добавьте следующее промежуточное ПО
источник
Если вы тестируете некоторые запросы javascript для ionic2 или angularjs 2 в chrome на ПК или Mac, убедитесь, что вы установили плагин CORS для браузера chrome, чтобы разрешить перекрестное происхождение.
запросы на получение майбы будут работать без этого, но для отправки, размещения и удаления потребуется установить плагин cors, чтобы тестирование прошло без проблем, что определенно не круто, но я не знаю, как люди делают это без плагина CORS.
а также убедитесь, что ответ JSON не возвращается 400 по состоянию JSON
источник
это проблема бэкэнда. если вы используете sails api, измените cors.js и добавьте сюда свой файл
источник
В Asp Net Core , чтобы быстро заставить его работать на развитие; в
Startup.cs
,Configure method
добавитьисточник
В моем случае я получаю несколько параметров как @HeaderParam в метод веб-службы.
Эти параметры ДОЛЖНЫ быть объявлены в вашем фильтре CORS следующим образом:
источник
Request header field Access-Control-Allow-Origin is not allowed by Access-Control-Allow-Headers
ошибка означает, чтоAccess-Control-Allow-Origin
поле заголовка HTTP не обработано или не разрешено ответом. УдалитьAccess-Control-Allow-Origin
поле из заголовка запроса.источник
Если вы используете
localhost
PHP и установите это для решения проблемы:С вашего внешнего использования:
и бум больше никаких проблем
localhost
!источник