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,完美解决。

  • 相关阅读:
    JZOI 4020 Revolution
    JZOJ 4018 Magic
    JZOJ 4017 逃跑
    JZOJ 4016 圈地为王
    JZOJ 4015 数列
    JZOJ 3960 鸡腿の出行
    BZOJ 5005 & JZOI 3959 鸡腿の乒乓
    GCJ2009B&JZOJ 4033 Min Perimeter
    jzoj 3948 Hanoi 塔
    [纯符][纯粹的无聊] 神奇的递推式
  • 原文地址:https://www.cnblogs.com/wjslw/p/5937438.html
Copyright © 2011-2022 走看看