1

Мне нужно сделать CORS из/в различные домены Sharepoint и, конечно же, обработать запрос предварительной проверки OPTIONS. После многих исследований я обнаружил, что решение this является (почти) лучшим для моих нужд. Изменение global.asax позволяет обрабатывать несколько доменов с переданными учетными данными и запрос предварительной проверки OPTIONS.Включить CORS в Sharepoint 2013

Плохая сторона заключается в том, что после применения ее, как было предложено, вы больше не можете войти в Sharepoint Designer.

Я изменил global.asax, как показано ниже, CORS в порядке, но Sharepoint Designer no.

public void Application_BeginRequest(object sender, EventArgs e) 
{ 
string httpOrigin = Request.Params["HTTP_ORIGIN"]; 
if (httpOrigin != null) 
{ 
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", httpOrigin); 
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS"); 
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-RequestDigest"); 
    HttpContext.Current.Response.AddHeader("Access-Control-Allow-Credentials", "true"); 

    if (Request.HttpMethod == "OPTIONS") 
    { 
     HttpContext.Current.Response.StatusCode = 200; 
     var httpApplication = sender as HttpApplication; 
     httpApplication.CompleteRequest(); 
    } 
}  
} 

Я прочитал с Скрипач запрос, который Sharepoint Designer делает и есть не заголовок «Origin», поэтому я не знаю, где он выходит из строя. Когда я пытаюсь войти в Sharepoint Designer, я получаю всегда 401 в качестве ответа.

Есть ли кто-то, кто знает, как его решить? Спасибо

ответ

0

Вы пытались сменить web.config на свой корень IIS?

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
<system.webServer> 
    <httpProtocol> 
    <customHeaders> 
     <add name="Access-Control-Allow-Origin" value="*" /> 
    </customHeaders> 
    </httpProtocol> 
</system.webServer> 
</configuration> 

http://enable-cors.org/server_iis7.html

1

Это действительно модификации веб-конфигурации, но, чтобы получить эту работу я должен был использовать SPWebConfigModification класс

$webApp = Get-SPWebApplication http://myurl/ 
$modification = New-Object Microsoft.SharePoint.Administration.SPWebConfigModification 
$modification.Path = "configuration/system.webServer/httpProtocol/customHeaders" 
$modification.Name = "add[@name=`"Access-Control-Allow-Origin`"][@value=`"http://theirurl`"]" 
$modification.Value = "<add name=`"Access-Control-Allow-Origin`" value=`"http://theirurl`" />" 
$modification.Owner = “Administrator” 
$modification.Sequence = 0 
$modification.Type = 0 

if (($webapp.WebConfigModifications | where-object { $_.Name -eq $modification.Name } | measure).Count -eq 0) { 
    Write-Host "Adding " $modification.Name 
    $webApp.WebConfigModifications.Add($modification)  
} 
else { 
    Write-Host $modification.Name already added 
} 
$webApp.Update() 
$webApp.WebConfigModifications 
$webApp.Parent.ApplyWebConfigModifications() 
Смежные вопросы