Блокирован перекрестный запрос: одна и та же политика происхождения запрещает чтение удаленного ресурса (запрос POST с объектом) - PullRequest
1 голос
/ 24 февраля 2020

Я включил CORS в своем веб-приложении API

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

Все запросы работают нормально. но when i pass an object to the post method я получаю это:

Запрос перекрестного источника заблокирован: та же политика происхождения запрещает чтение удаленного ресурса по адресу http://localhost: 44367 / api / Users / Create, (Причина: отсутствует заголовок CORS «Access-Control-Allow-Origin»).

// WORKING
return axios.post(url)
return axios.get(url)


// NOT WORKING

let model = {
    firstName: 'a',
}

return axios.post(url, model);

// or with configuration

let axiosConfig = {
            headers: {
                'Content-Type': 'application/json;charset=UTF-8',
                "Access-Control-Allow-Origin": true,
                "Access-Control-Allow-Credentials": true,
            }
        };

return axios.post(url, model, axiosConfig);

Работает также публикация с почтальоном, со следующим телом

//{
//  "model" : {
//      "name":"firstName"
//  }
//}

i установили точку останова в событии Application_BeginRequest, и оно не будет выполнено.

Действие контроллера

public ClientResponseModel<User> Create([FromBody]UserAddModel model)
{
   ///.....
}

Заголовок запроса

Host: localhost:44367
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0
Accept: */*
Accept-Language: en,en-US;q=0.5
Accept-Encoding: gzip, deflate
Access-Control-Request-Method: POST
Access-Control-Request-Headers: access-control-allow-credentials,access-control-allow-origin,content-type
Referer: http://localhost:44346/Registration.aspx
Origin: http://localhost:44346
Connection: keep-alive

Заголовок ответа

HTTP/1.1 200 OK
Allow: OPTIONS, TRACE, GET, HEAD, POST
Server: Microsoft-IIS/10.0
Public: OPTIONS, TRACE, GET, HEAD, POST
X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcYWxpLmtcc291cmNlXEF6dXJlXExlYmFuZXNlTGF3c1xDTVNcYXBpXFVzZXJzXENyZWF0ZQ==?=
X-Powered-By: ASP.NET
Date: Mon, 24 Feb 2020 13:56:15 GMT
Content-Length: 0

Любая помощь очень ценится!

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

Я закончил тем, что добавил в свой web.config следующее, чтобы оно работало без какой-либо пользовательской конфигурации на топоре ios:

  <system.webServer>
    <handlers>
      <remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
      <remove name="OPTIONSVerbHandler"/>
      <remove name="TRACEVerbHandler"/>
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
    </handlers>
  </system.webServer>
0 голосов
/ 24 февраля 2020

это типичный вопрос о cors, прочитайте ссылку ниже, это может помочь вам понять, почему произошла эта ошибка.

https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

Технология, браузер будет заблокируйте ваш запрос xhr, если домен вашей страницы не совпадает с URL-адресом запроса. Ваш сервер должен ответить с заголовком Access-Control-Allow-Origin: <origin of your client page> | *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...