3 回答

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

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 };
}
}
- 3 回答
- 0 關(guān)注
- 741 瀏覽
添加回答
舉報(bào)