Csharp/C#教程:使用ASP.Net webapi的Angular.js $资源?分享


使用ASP.Net webapi的Angular.js $资源?

我有一个简单的ASP.Net WebAPI服务,它在POST / PUT上分配一个静态变量并返回GET上的值:

private static State Repo = null; public State Get() { return Repo; } public void Post(State value) { Repo = value; } public void Put(State value) { Repo = value; } 

我有一个像这样定义的角度资源:

 var stateService = angular.module('StateService', ['ngResource']); stateService.factory('State', function ($resource) { return $resource('https://localhost:8080/API/State'); }); 

当我尝试这样做时:

 State.get(function (state) { $scope.data = state.data !== undefined ? state.data : '[Not Set]'; state.data = "newvalue"; state.$save(); }); 

get()工作正常,但$save()在chrome中抛出此错误:

 XMLHttpRequest cannot load https://localhost:8080/API/State. Invalid HTTP status code 405 

webAPI已启用CORS(返回Access-Control-Allow-Origin: * )。 我错过了什么?

对于某些CORS请求,浏览器在发送对资源的实际请求之前发送另一个请求,称为“预检请求”。

飞行前请求使用HTTP OPTIONS(405状态代码)方法。 它包括两个特殊标题:

即使您已启用CORS,它也适用于GET请求,并且您已告知它正在为POST请求显示405 HTTP Status 。 这是因为, POST,PUT,DELETE请求都不是安全请求,它们首先发送请求OPTIONS请求,你必须回复那将需要hedaer,如Access-Control-Allow-Origin: *Access-Control-Allow-Methods: POST ,然后它将再次发送POST请求,然后它将工作。

请validation您要回复的标头是什么。 即要成功进行CORS POST请求,至少必须发送Access-Control-Allow-Methods: POST以及Access-Control-Allow-Origin: *

启用CORS的步骤:

  1. 安装它 – 使用NuGet安装包Microsoft.AspNet.WebApi.Cors
  2. 打开文件App_Start / WebApiConfig.cs。 将以下代码添加到WebApiConfig.Register方法。
  3. 接下来,将[EnableCors]属性添加到Controller类:

    以下参数

    [EnableCors(起源:“your_domain”,标题:“*”,方法:“POST”)]

  4. 重新部署WebAPI项目。

消息来源 – https://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api

更多链接 – https://www.codeproject.com/Articles/742532/Using-Web-API-Individual-User-Account-plus-CORS-En

在Web.config上,注释

   

如果您使用的是web.config文件的CORS配置。

上述就是C#学习教程:使用ASP.Net webapi的Angular.js $资源?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1022433.html

(0)
上一篇 2022年1月7日
下一篇 2022年1月7日

精彩推荐