簡體   English   中英

如何在Dynamics CRM中啟用CORS?

[英]How to enable CORS in Dynamics CRM?

請注意,該問題專門針對Dynamics CRM。 我希望有一種專有功能可以擴展或替換常見的Web開發。 因此,這個問題不是重復的,盡管一旦人們看到“ CORS”和“又有一只鴨子在問CORS ...”(通常是打字錯誤),看起來就好像是這樣。

我試圖打電話給CRM的外部人員,當然,我遇到了CORS問題。 現在,我幾乎無法控制呼叫定向到的服務器端,因此我想知道是否可以通過客戶端解決該問題。

最佳解決方案是服務器開發人員允許來自不同域的呼叫,但存在他們不這樣做的風險。 那么,除了編寫自定義服務層以向CORS打開以訪問來自CRM的呼叫並與第三方服務器對話之外,我還有什么選擇?

內容如下(當然,從URL行來看,調用效果非常好)。

跨域請求被阻止: 同源策略禁止在https://yaba.daba.doo/list?p1 = []&p2 = 0 && __ 41515629629958處讀取遠程資源。 可以通過將資源移到同一域或啟用CORS來解決此問題。

這是一個老問題,但是我在CRM 2011(和IIS 7.0)上通過編輯web.config解決了該問題。

我已將CORS標頭添加到IIS響應中。

添加基本​​標題

<system.webServer>
  <httpProtocol>
     <customHeaders>
        <add name="Access-Control-Allow-Headers" value="Origin, X-HTTP-Method, X-Requested-With, Content-Type, Accept" />
        <add name="Access-Control-Allow-Methods" value="POST,GET,OPTIONS,PUT,DELETE" />
        <add name="Access-Control-Allow-Credentials" value="true" />
     </customHeaders>
   </httpProtocol>[..]

添加規則

安裝網址重寫並添加以下規則

<rewrite>
    <rules>
        [..]
        <!-- This rule allow the prefligh request to be authenticated, otherwise raise the 401 error, required ONLY if you use POST, for GET only is not necessary -->
        <rule name="CORS Preflight Anonymous Authentication" stopProcessing="true">
            <match url=".*" />
            <conditions>
                <add input="{REQUEST_METHOD}" pattern="^OPTIONS$" />
            </conditions>
            <action type="CustomResponse" statusCode="200" statusReason="Preflight" statusDescription="Preflight" />
        </rule>
        [..]
    </rules>

    <outboundRules>
        <clear />                
        <rule name="AddCORSHeaders">
            <match serverVariable="RESPONSE_Access_Control_Allow_Origin" pattern=".*" />
            <conditions logicalGrouping="MatchAll" trackAllCaptures="true">
                <!-- This add the Access-Control-Allow-Origin if the pattern match the request url -->
                <add input="{HTTP_ORIGIN}" pattern="(http(s)?://((.+\.)?domain1\.lan|(.+\.)?mydomain\.com|(.+\.)?otherdomain\.com))" />
            </conditions>
            <action type="Rewrite" value="{C:0}" />
        </rule>           
    </outboundRules>

</rewrite>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM