Tôi đã thử sau bài này, nhưng tôi vẫn không khá có:Bật CORS có yêu cầu WebAPI PUT/POST?
CORS support for PUT and DELETE with ASP.NET Web API
Trong web.config của tôi, tôi đã điều sau đây:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<httpProtocol>
<customHeaders>
<!-- TODO: don't let anyone make requests - only approved clients -->
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="WebDAV" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule"/>
</modules>
</system.webServer>
Nhưng trong chrome khi tôi thực hiện một yêu cầu POST tôi nhận được lỗi không được phép:
yêu cầu của tôi vẻ như thế này:
var request = $.ajax({
async: true,
url: apiEndpoint + 'api/login',
type: 'POST',
data: JSON.stringify(data),
contentType: "application/json; charset=utf-8",
dataType: 'json'
})
apiEndpoint là trên máy chủ cục bộ nhưng trên một cổng khác - khách hàng và dự án api có các giải pháp khác nhau.
Yêu cầu POST cuối cùng cũng đến được máy chủ, nhưng tôi luôn gặp lỗi liên quan đến OPTIONS và tôi không bao giờ nhận được cookie được lưu cho khách hàng vì nó.
Tôi đã dành vài tiếng đồng hồ cuối cùng cố gắng để có được CORS với WebAPI làm việc:
https://aspnetwebstack.codeplex.com/wikipage?title=CORS%20support%20for%20ASP.NET%20Web%20API
Nhưng một số vấn đề phiên bản lắp ráp dẫn đến tôi giật mọi thứ - hy vọng có một giải pháp đơn giản hơn.
Cảm ơn bạn Badri. Điều này đã đẩy tôi thêm một bước nữa! – SB2055
Làm thế nào bạn sẽ thực hiện điều này trong bộ điều khiển? –
Imo POST không tạo yêu cầu preflight –