Asp.Net Core跨域配置

<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <link href="https://cdn.bootcss.com/twitter-bootstrap/4.3.1/css/bootstrap.css" rel="stylesheet"> </head> <body> <div class="container"> <p>在没有设置跨域配置的时候,Ajax请求时会报以下错误</p> <blockquote> <code>已拦截跨源请求:同源策略禁止读取位于 http://localhost:5000/Home/gettime 的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')。 </code> </blockquote> <p>ASP.net Core跨域有两种,全局和区域</p> <div> <h2>全局跨域</h2> <p>打开Startup.cs文件,在ConfigureServices方法中添加以下代码</p> <h4>1.配置跨域处理,允许所有来源:</h4> <blockquote> <code> services.AddCors(options => { options.AddPolicy("stdio", p => p.AllowAnyOrigin()); }); </code> </blockquote>
        <h4>2.允许一个或多个具体来源:</h4>
        <blockquote>
            <code>
                services.AddCors(options => {
                options.AddPolicy("stdio"/*跨域的名称*/, policy => {
                policy.WithOrigins("http://localhost:5000", "http://127.0.0.1")
                .AllowAnyOrigin();
                });
                });
            </code>
        </blockquote>
        <p>以上两种选择一种即可</p>
        <p>Configure方法中添加以下代码即可</p>
        <blockquote>
            <code>
                app.UseCors("stdio");//必须位于UseMVC之前
            </code>
        </blockquote>

    </div>
    <div>
        <h2>局部跨域</h2>
        <p>1.ConfigureServices方法不变,删除Configure中的app.UseCors()方法</p>
        <p>2.在Controller顶部或者Action方法顶部加上[EnableCors(“自定义的跨域策略名称")]</p>
        <blockquote>
            <div class=" text-danger">
                <div>[EnableCors("stdio")]</div>
                <div>public class HomeController:Controller //放在Controller</div>
            </div>
            <br>
            <div class=" text-danger">
                <div>[EnableCors("stdio")]</div>
                <div>public IActionResult GetTime() //放在方法上</div>
            </div>
        </blockquote>

    </div>
</div>
</body>