Проблемы с CORS в приложении MVC 4.5 с использованием ajax-запроса для googleOauth - PullRequest
0 голосов
/ 29 июня 2018

Я получаю сообщение о блокировке запроса источника CROSS, сообщающее, что у меня есть заголовок CORS "Access-Control-Allow-Origin отсутствует" и "запрос не выполнен".

Я следил за многими открытыми проблемами здесь, одна из них заключалась в том, чтобы разместить их ниже в моей веб-конфигурации, но я все еще получаю сообщение об ошибке:

<add name="Access-Control-Allow-Origin" value="*"/>
<add name="Access-Control-Allow-Methods" value="*" />
<add name="Access-Control-Allow-Headers" value="*" />

Вот мой запрос ajax:

$.ajax({
   url: "ExternalLogin",
   type: "POST"
});

Я что-то упустил? Пожалуйста, помогите, я потратил почти 3 часа на эту проблему. Спасибо

На сегодняшний день вот что я добавил в свое приложение для аутентификации пользователей с помощью Google OAuth, но я все еще сталкиваюсь с отсутствующей проблемой "Same Cross Origin":

Веб-конфигурация (не та, что в представлениях)

 <system.webServer>
<httpProtocol>
  <customHeaders>
    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Headers" value="Content-Type" />
    <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
  </customHeaders>
</httpProtocol>
<modules>
  <remove name="FormsAuthentication" />
</modules>

Я добавил пакет слепков для включения CORS в моем global.asx следующим образом

HttpConfiguration config = new HttpConfiguration();
var cors = new EnableCorsAttribute("http://localhost:5630", "*", "*")
config.EnableCors(cors);

И это в вызове ExternalLogin AccountController

public override void ExecuteResult(ControllerContext context)
        {
            context.HttpContext.Response.Headers.Add("Access-Control-Allow-Origin", "*");
            context.HttpContext.Response.Headers.Add("Access-Control-Allow-Headers", "Content-Type");
            context.HttpContext.Response.Headers.Add("Access-Control-Allow-Methods", "POST");

            var properties = new AuthenticationProperties { RedirectUri = RedirectUri };
            if (UserId != null)
            {
                properties.Dictionary[XsrfKey] = UserId;
            }
            context.HttpContext.GetOwinContext().Authentication.Challenge(properties, LoginProvider);
        }

Я так растерялся и не знаю, что теперь делать, кто-нибудь может помочь?

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Просто добавьте это, но для удовольствия попробуйте это, измените ваш запрос AJAX на:

$.ajax({
    url: 'https://cors-anywhere.herokuapp.com/' + ExternalLogin,
    headers: {
        'X-Requested-With':'XMLHttpRequest'
    },
    method: 'POST',
    dataType: 'json',
    data: YourData,
    success: function(data){
      console.log('success: '+ data);
    }
  });

Сделайте попытку, посмотрите, по-прежнему ли вы получаете ошибку CORS или используете cors-где-нибудь, что не удалось;

Я также провел часы на CORS сам, прежде чем обнаружил cors-где угодно; это сэкономило мне много времени, может сэкономить и вам время. :)

0 голосов
/ 29 июня 2018
  • В вызове CORS и запрос, и ответ должны содержать заголовки.
  • Ваша часть запроса выглядит нормально и корректно, проблема в том, что ваш ответ не обработан с разрешенным перекрестным заголовком запроса orgin для этого запросчика.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...