zoukankan      html  css  js  c++  java
  • C#解决jsonp跨域问题jsonp跨域配置

    1,建立一个CorsHandler类

    public class CorsHandler : DelegatingHandler
    {
    const string Origin = "Origin";
    const string AccessControlRequestMethod = "Access-Control-Request-Method";
    const string AccessControlRequestHeaders = "Access-Control-Request-Headers";
    const string AccessControlAllowOrigin = "Access-Control-Allow-Origin";
    const string AccessControlAllowMethods = "Access-Control-Allow-Methods";
    const string AccessControlAllowHeaders = "Access-Control-Allow-Headers";

    protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
    bool isCorsRequest = request.Headers.Contains(Origin);
    bool isPreflightRequest = request.Method == HttpMethod.Options;
    if (isCorsRequest)
    {
    if (isPreflightRequest)
    {
    return Task.Factory.StartNew<HttpResponseMessage>(() =>
    {
    HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
    response.Headers.Add(AccessControlAllowOrigin, request.Headers.GetValues(Origin).First());

    string accessControlRequestMethod = request.Headers.GetValues(AccessControlRequestMethod).FirstOrDefault();
    if (accessControlRequestMethod != null)
    {
    response.Headers.Add(AccessControlAllowMethods, accessControlRequestMethod);
    }

    string requestedHeaders = string.Join(", ", request.Headers.GetValues(AccessControlRequestHeaders));
    if (!string.IsNullOrEmpty(requestedHeaders))
    {
    response.Headers.Add(AccessControlAllowHeaders, requestedHeaders);
    }

    return response;
    }, cancellationToken);
    }
    else
    {
    return base.SendAsync(request, cancellationToken).ContinueWith<HttpResponseMessage>(t =>
    {
    HttpResponseMessage resp = t.Result;
    resp.Headers.Add(AccessControlAllowOrigin, request.Headers.GetValues(Origin).First());
    return resp;
    });
    }
    }
    else
    {
    return base.SendAsync(request, cancellationToken);
    }
    }
    }

    2、在Application_Start()里面配置

    //jsonp跨域
    GlobalConfiguration.Configuration.MessageHandlers.Add(new CorsHandler());

    OK,完美解决。

  • 相关阅读:
    SharpReader的效率:支持meme聚合
    RSS阅读器:从订阅到发现之旅?
    关于word使用WildCards进行查找和替换
    Cannot resolve plugin org.apache.maven.plugins:mavencleanplugin:2.5
    MyBatis
    python matplotlib中axes与axis subplot的区别是什么?
    MyBatis中settings属性配置详解
    IDEA中 Project 和 Module 的区别
    Pycharm 运行程序后如何 如何查看变量的值(不通过debug的方式)
    查看oracle是否正常、表空间 (AIX)
  • 原文地址:https://www.cnblogs.com/wjslw/p/5937438.html
Copyright © 2011-2022 走看看