Запрос POST от Sharepoint 2013 XMLHtpRequest заблокирован CORS - PullRequest
0 голосов
/ 14 июля 2020

У меня есть базовый c C# веб-API, который я пытаюсь вызвать с сайта Sharepoint. В настоящее время он не развернут и работает в IIS Express прямо из Visual Studio. В моем первоначальном тестировании я просто добавил базовую страницу c HTML с парой текстовых полей, кнопкой отправки и вызовом AJAX, чтобы показать, что API работает, и это так. Но когда я пытаюсь сделать это из Sharepoint, я получаю ошибку CORS.

Access to XMLHttpRequest at 'http://localhost:63123/api/MKT' from origin 'https://sharepointurl.com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status.

Я пробовал:

  1. добавляя следующие заголовки в файл web.config моего веб-API

    <add name="Access-Control-Allow-Origin" value="*" />
    <add name="Access-Control-Allow-Methods" value="GET,POST,OPTIONS" />
    <add name="Access-Control-Allow-Headers" value="*" />
    
  2. Пробовал использовать подключаемый модуль Chrome, который отключает политику COR.

Однако ошибка сохраняется. Есть мысли о том, что еще я могу устранить, чтобы отследить это? Мне кажется, что это либо что-то на стороне IIS Express, либо, возможно, Sharepoint.

<script src = "src=" //ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" type="text/javascript"></script>
<script type = "text/javascript" >

 function PreSaveAction() {

  var foldername = new Object();
  foldername.businessunitname = $("select[title='TestSelection1']").find("option:selected").text();
  foldername.dbatenantname = $("select[title='TestSelection2']").find("option:selected").text();

  $.ajax({
   url: 'http://localhost:63123/api/MKT',
   type: 'POST',
   dataType: 'json',
   contentType: "application/json",
   data: JSON.stringify(foldername),
   success: function(data, textStatus, xhr) {
    console.log(data);
   },
   error: function(xhr, textStatus, errorThrown) {
    console.log('Error in Operation');
   }
  });

 }

</script>

1 Ответ

0 голосов
/ 22 июля 2020

В конечном итоге решением для меня стала установка модуля CORS в IIS. Мне также нужно было убедиться, что я удалил другие настраиваемые заголовки в файле web.config, а затем настроил добавление записей для модуля IIS CORS. Оттуда я добираюсь до go. Также возможно, что мне просто нужно было передать эти заголовки в моем запросе POST, но я не смог заставить это работать, если действительно это было решение для начала.

...