zoukankan      html  css  js  c++  java
  • .net core实现前后端彻底分离

    问题的关键在跨域

    1.我们在services里面 添加跨域内容如下:

    public void ConfigureServices(IServiceCollection services)
            {
                //这个AddOcelot方法是Ocelot包给IServiceCollection扩展的方法
                services.AddOcelot(configuration).AddConsul();
                #region CORS
                services.AddCors(c =>
                {
                    //↓↓↓↓↓↓↓注意正式环境不要使用这种全开放的处理↓↓↓↓↓↓↓↓↓↓
                    c.AddPolicy("AllRequests", policy =>
                    {
                        policy
                        .AllowAnyOrigin()//允许任何源
                        .AllowAnyMethod()//允许任何方式
                        .AllowAnyHeader()//允许任何头
                        .AllowCredentials();//允许cookie
                    });
                    //↑↑↑↑↑↑↑注意正式环境不要使用这种全开放的处理↑↑↑↑↑↑↑↑↑↑
    
    
                    //一般采用这种方法
                    c.AddPolicy("LimitRequests", policy =>
                    {
                        policy
                        .WithOrigins("http://localhost:8020", "http://blog.core.xxx.com", "")//支持多个域名端口
                        .WithMethods("GET", "POST", "PUT", "DELETE")//请求方法添加到策略
                        .WithHeaders("authorization");//标头添加到策略
                    });
    
                });
                #endregion
            }

    2.在中间件中添加跨域内容

     // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
            public void Configure(IApplicationBuilder app, IHostingEnvironment env)
            {
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                }
                #region 跨域相关
                app.UseCors("AllRequests");
                #endregion
                //app.Run(async (context) =>
                //{
                //    await context.Response.WriteAsync("Hello World!");
                //});
                app.UseOcelot().Wait();
            }

    注意如果项目没有用ocelot 直接是请求webapi  我们上述内容写在webapi的startup文件中

    如果项目使用了ocelot 那么我们的上述内容只需要写在ocelot项目中

    3.跨域请求 get没什么问题 但是post要注意:

    post请求传递参数要有如下代码:

    一个完整的例子:

    <html>
    
        <head>
            <meta charset="utf-8" />
            <title>请求</title>
            <script type="text/javascript" src="js/jquery-1.8.3.js"></script>
            <script type="text/javascript">
                $.ajax({
                    type: "post",
                    url: "https://www.xxx.net/xxxService/Category/AddCategory",
                    data: JSON.stringify({
                        "CategoryName": "类别",
                        "Code": 4
                    }),
                    contentType:"application/json",
                                                       
                    success: function(data) {
                        console.log(data);
                    },
                    error: function() {
                        console.log("请求错误")
                    }
                });
            </script>
        </head>
    
        <body>
    
        </body>
    
    </html>

    done!

  • 相关阅读:
    改造vant日期选择
    css3元素垂直居中
    npm综合
    (转)网页加水印方法
    Mac下IDEA自带MAVEN插件的全局环境配置
    隐藏注册控件窗口
    High performance optimization and acceleration for randomWalk, deepwalk, node2vec (Python)
    How to add conda env into jupyter notebook installed by pip
    The Power of WordNet and How to Use It in Python
    背单词app测评,2018年
  • 原文地址:https://www.cnblogs.com/wholeworld/p/9648072.html
Copyright © 2011-2022 走看看