首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用CORs限制其他域的跨源请求

如何使用CORs限制其他域的跨源请求
EN

Stack Overflow用户
提问于 2022-03-25 05:15:17
回答 2查看 728关注 0票数 0

我正在从事asp.net webapi项目,我希望只允许我的域访问,但是当我从JavaScript调用webapi时,它工作得很好,但问题是当我从c#代码调用webapi时,它允许任何domine访问,如何限制它,我希望只为我的域提供访问权限。

我正在从事asp.net webapi项目,我只想允许我的域访问,但是当我从JavaScript调用webapi时,它工作得很好,但问题是当我从c#代码调用webapi时,它允许所有的域访问,我如何限制它?我只想为我的域提供访问权限

EN

回答 2

Stack Overflow用户

发布于 2022-03-25 06:27:44

您可以使用Microsoft.AspNet.WebApi.Cors,一个来自微软的Nuget包。按照以下步骤:

  1. 安装API项目的包。
  2. App_Start/WebApiConfig.cs文件中添加一行代码以启用函数: config.EnableCors(); 使用System.Web.Http;命名空间WebService {公共静态类WebApiConfig {公共静态空寄存器(HttpConfiguration配置){ //新代码config.EnableCors();config.Routes.MapHttpRoute(名称:"DefaultApi",routeTemplate:“api/{控制器}/{ id }”,默认值:new{id= RouteParameter.Optional } );}}
  3. 在控制器或操作中使用属性,如: 使用System.Net.Http;使用System.Web.Http;使用System.Web.Http.Cors;命名空间WebService.Controllers {EnableCors(源文件:"*",方法:"*")公共类TestController : ApiController { // Controller方法未显示.}}

你可以得到更多的信息这里

票数 1
EN

Stack Overflow用户

发布于 2022-03-25 07:22:38

1=> var cors = new EnableCorsAttribute("http://mydomain", "*", "*"); config.EnableCors(cors);我在web配置文件中作为全局级别编写了这段代码,但是当我从客户端调用我的web时,它运行良好,它只允许指定的域。

2=>这是我的客户端代码

代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/2.2.0/knockout-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
$ $.ajax({
                url: "http://localhost:49676/Account/ValidLogin",
                method: "get",
                data: Employee,
                dataType: "json",
                //contentType: "application/json",
                success: function (data) {
                    GetAllEmployee(data);

                    alert("success");
                    console.log(data);
                },
                error: function (err) {
                    alert("error");
                }
  1. 我编写了一些代码i web配置文件来限制其他域请求,但是当我通过客户端调用web时,它允许任何域访问,所以我的问题是我想限制我的api形式,其他公共域

这是我的服务器端代码

受保护的空btnDelete_Click(对象发送方,EventArgs e) {

代码语言:javascript
复制
        string strUrl = string.Format("http://mydomain/account/validlogin?username=admin&password=admin");
        HttpWebRequest requestObjectGet = (HttpWebRequest)HttpWebRequest.Create(strUrl);
        requestObjectGet.Method = "GET";
        HttpWebResponse responseObjectGet = null;
        responseObjectGet = (HttpWebResponse)requestObjectGet.GetResponse();

        string strresulttest = null;

        using (Stream stream = responseObjectGet.GetResponseStream())
        {
            StreamReader sr = new StreamReader(stream);
            strresulttest = sr.ReadToEnd();
            JavaScriptSerializer js = new JavaScriptSerializer();
            string StrToken = js.Deserialize<string>(strresulttest);
            Session["ApiToken"] = StrToken;

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71612458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档