прямо сейчас Я тестирую свой сайт reactjs на locahost: 3333 и мой asp.net web api 2 на localhost: 54690.Как включить CORS? Sever? Javascript? где?
Я использую axios для моего ajax, но когда я делаю запрос, я получаю сообщение об ошибке.
XMLHttpRequest не может загрузить http://localhost:54690/api/Storage/Get. Ответ на предполетный запрос не проходит проверку контроля доступа: Нет Заголовок «Access-Control-Allow-Origin» присутствует на запрошенном ресурсе . Origin 'http://localhost:3333' поэтому не допускается доступ. Ответ получил код состояния HTTP 500.
Я попытался добавить Корса, но думаю, что я не делаю это правильно. Я попробовал серверную и клиентскую стороны.
var instance = axios.create({
baseURL: 'http://localhost:54690/api',
timeout: 1000,
headers: { 'Access-Control-Allow-Origin': '*' }
});
instance.get('/Storage/Get')
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
стороне сервера
[EnableCors(origins: "http://localhost:3333/", headers: "*", methods: "*")]
public class StorageController : ApiController
WebapiConfig.
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Filters.Add(new EnableQueryAttribute());
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.EnableCors();
}
}
Редактировать
Кажется, когда я делаю это
[EnableCors (происхождение: "", заголовки: "", методы: "*")]
это работает , Мне даже не нужно вставлять что-нибудь в заголовок для моего ajax. Хотя это не настоящая душа, поскольку я не хочу, чтобы это происходило в производстве, я предполагаю?
Также есть глобальная функция, которую я могу установить на корс? Kinda отстой, чтобы поставить его на каждый контроллер.
Edit 2
смотрит больше в связи с @ kormali_2 я вижу, что проблема может быть потому, что у меня есть «http://locahost:3333/», где он должен быть «http://locahost:3333» также есть глобальный вариант я могу использовать.
Вы использовали System.Web.Http.Cors; '? http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api –
Да для моего контроллера у меня есть System.Web.Http.Cors; – chobo2
добавление заголовков заголовков сторон не имеет смысла. –