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

  • 相关阅读:
    python3.6虚拟环境
    安装VMwareTools
    Vsftpd配置(Centos7)
    Sftp配置
    权限问题
    Zabbix5.0微信报警
    K8s Scheduler 在调度 pod 过程中遗漏部分节点的问题排查
    Getting Started and Beyond|云原生应用负载均衡选型指南
    混部之殇-论云原生资源隔离技术之CPU隔离(一)
    云原生技术开放日PPT大放送 | 五星级的云原生开发体验
  • 原文地址:https://www.cnblogs.com/wjslw/p/5937438.html
Copyright © 2011-2022 走看看