第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在ASP.NET MVC / WebAPI應(yīng)用程序中支持HTTP OPTIONS動(dòng)詞

如何在ASP.NET MVC / WebAPI應(yīng)用程序中支持HTTP OPTIONS動(dòng)詞

Qyouu 2019-10-09 16:51:42
我已經(jīng)從MVC 4 / Web API模板開始設(shè)置了ASP.NET Web應(yīng)用程序。似乎一切運(yùn)行得很好-沒(méi)有我知道的問(wèn)題。我已經(jīng)使用Chrome和Firefox瀏覽了該網(wǎng)站。我已經(jīng)使用Fiddler進(jìn)行了測(cè)試,所有的響應(yīng)似乎都可以賺錢。因此,現(xiàn)在我繼續(xù)編寫一個(gè)簡(jiǎn)單的Test.aspx來(lái)使用此新的Web API。腳本的相關(guān)部分:<script type="text/javascript">    $(function () {        $.ajax({            url: "http://mywebapidomain.com/api/user",            type: "GET",            contentType: "json",            success: function (data) {                $.each(data, function (index, item) {                    ....                    });                }                );            },            failure: function (result) {                alert(result.d);            },            error: function (XMLHttpRequest, textStatus, errorThrown) {                alert("An error occurred, please try again. " + textStatus);            }        });    });</script>這將生成一個(gè)REQUEST標(biāo)頭:OPTIONS http://host.mywebapidomain.com/api/user HTTP/1.1Host: host.mywebapidomain.comUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflateOrigin: http://mywebapidomain.comAccess-Control-Request-Method: GETAccess-Control-Request-Headers: content-typeConnection: keep-aliveWeb API照原樣返回405方法不允許。HTTP/1.1 405 Method Not AllowedCache-Control: no-cachePragma: no-cacheContent-Type: application/xml; charset=utf-8Expires: -1Server: Microsoft-IIS/8.0X-AspNet-Version: 4.0.30319X-Powered-By: ASP.NETDate: Mon, 30 Sep 2013 13:28:12 GMTContent-Length: 96<Error><Message>The requested resource does not support http method 'OPTIONS'.</Message></Error>必須有他邏輯...我不知道如何正確編碼Options方法,或者控制器是否是放置代碼的適當(dāng)位置。(對(duì)我來(lái)說(shuō))很奇怪,當(dāng)從Firefox或Chrome瀏覽器查看Web API站點(diǎn)時(shí),它可以正確響應(yīng),但是上面的.ajax調(diào)用出錯(cuò)了。如何處理.ajax代碼中的“預(yù)檢”檢查?也許我應(yīng)該在客戶端的.ajax邏輯上解決此問(wèn)題?或者,如果由于不處理OPTIONS動(dòng)詞而在服務(wù)器端出現(xiàn)問(wèn)題。有人可以幫忙嗎?這一定是一個(gè)非常普遍的問(wèn)題,如果在這里得到回答,我深表歉意。我進(jìn)行了搜索,但沒(méi)有找到有幫助的答案。
查看完整描述

3 回答

?
jeck貓

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊

正如Daniel A. White在他的評(píng)論中所說(shuō),OPTIONS請(qǐng)求很可能是由客戶端創(chuàng)建的,作為跨域JavaScript請(qǐng)求的一部分。這是由跨源資源共享(CORS)兼容的瀏覽器自動(dòng)完成的。該請(qǐng)求是初步請(qǐng)求或飛行前請(qǐng)求,在實(shí)際AJAX請(qǐng)求之前進(jìn)行,以確定CORS支持哪些請(qǐng)求動(dòng)詞和標(biāo)頭。服務(wù)器可以選擇不支持,不支持全部或某些HTTP動(dòng)詞。


為了完成圖片,AJAX請(qǐng)求具有一個(gè)附加的“ Origin”標(biāo)頭,該標(biāo)頭標(biāo)識(shí)了從何處提供托管JavaScript的原始頁(yè)面。服務(wù)器可以選擇支持來(lái)自任何來(lái)源的請(qǐng)求,或者僅支持一組已知的可信來(lái)源的請(qǐng)求。允許任何來(lái)源都是安全風(fēng)險(xiǎn),因?yàn)檫@樣做會(huì)增加跨站請(qǐng)求偽造(CSRF)的風(fēng)險(xiǎn)。


因此,您需要啟用CORS。


這是解釋如何在ASP.Net Web API中執(zhí)行此操作的鏈接


http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api#enable-cors


此處描述的實(shí)現(xiàn)可讓您指定其他內(nèi)容


針對(duì)每個(gè)動(dòng)作,每個(gè)控制器或全局的CORS支持

支持的來(lái)源

啟用CORS aa控制器或全局級(jí)別時(shí),支持的HTTP動(dòng)詞

服務(wù)器是否支持通過(guò)跨域請(qǐng)求發(fā)送憑據(jù)

通常,此方法可以正常工作,但您需要確保已意識(shí)到安全風(fēng)險(xiǎn),尤其是在允許來(lái)自任何域的跨源請(qǐng)求的情況下。在允許這樣做之前,請(qǐng)仔細(xì)考慮。


關(guān)于哪種瀏覽器支持CORS,維基百科表示以下引擎支持它:


壁虎1.9.1(FireFox 3.5)

WebKit(Safari 4,Chrome 3)

MSHTML / Trident 6(IE10),在IE8和9中部分支持

普雷斯托(歌劇12)

http://en.wikipedia.org/wiki/Cross-origin_resource_sharing#Browser_support


查看完整回答
反對(duì) 回復(fù) 2019-10-09
?
慕桂英546537

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊

邁克·古德溫(Mike Goodwin)的回答很棒,但是當(dāng)我嘗試使用它時(shí),它似乎是針對(duì)MVC5 / WebApi 2.1的。Microsoft.AspNet.WebApi.Cors的依賴性在我的MVC4項(xiàng)目中不能很好地發(fā)揮作用。


下面是使用MVC4在WebApi上啟用CORS的最簡(jiǎn)單方法。


請(qǐng)注意,我已允許所有操作,建議您將Origin限制為只希望您的API服務(wù)的客戶端。允許一切都存在安全風(fēng)險(xiǎn)。


Web.config:

<system.webServer>

    <httpProtocol>

      <customHeaders>

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

        <add name="Access-Control-Allow-Methods" value="GET, PUT, POST, DELETE, HEAD" />

        <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />

      </customHeaders>

    </httpProtocol>

</system.webServer>

BaseApiController.cs:

我們這樣做是為了允許使用OPTIONS http動(dòng)詞


 public class BaseApiController : ApiController

  {

    public HttpResponseMessage Options()

    {

      return new HttpResponseMessage { StatusCode = HttpStatusCode.OK };

    }

  }


查看完整回答
反對(duì) 回復(fù) 2019-10-09
  • 3 回答
  • 0 關(guān)注
  • 741 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)