zoukankan      html  css  js  c++  java
  • google插件跨域含用户请求WebApi解决的方案

    问题描述:

    google插件跨域请求WebApi相关解决方案

    1.ajax解决含登录用户信息

    $.ajax({
                url: url,
                type: "POST",
                timeout: 60000,
                async: async,
                data: params,
                dataType: "json",
                xhrFields: { withCredentials: true },
                crossDomain: true,      //注意这两行代码,这里包含跨域并且包含登录用户信息      
                success: function (data) {
                    call(data);
                },
                error: function (error) {//增加访问出错信息返回
                    alert(JSON.stringify(error));                
                }, 
                complete: function (XMLHttpRequest, status) {               
                }
            });

    2.解决WebApi跨域的问题

    WebApi中的设置: 

    using System.Web.Http.Cors;//引用

    [EnableCors(origins: "*", headers: "*", methods: "*")]//注意在类上添加
    public class DemoController : ApiController

        [Route("api/GatherOne"),HttpPost]

            public HttpResponseMessage DemoCors()//注意这里的返回对象一定要含有HttpResponseMessage对象,因为这个对象添加响应表头,否则前端浏览器无法收到服务器端返回的值,并且报没有Access-Control-Allow-Origin的cors错误

            {            

                IEnumerable<string> origin;
                Request.Headers.TryGetValues("Origin", out origin);//注意这里:获取前端的Origin值
    
                if (origin.Any())
                {
                    HttpResponseMessage httpResponseMessage = new HttpResponseMessage();
                    httpResponseMessage.Headers.Add("Access-Control-Allow-Origin", origin);//这里必须要添加此标签中,否则无法解决跨域的问题
                    httpResponseMessage.Headers.Add("Access-Control-Allow-Headers", "*");
                    httpResponseMessage.Headers.Add("Access-Control-Allow-Credentials", "true");
                    httpResponseMessage.Headers.Add("Access-Control-Allow-Methods", "*");
           }
        }

    3.WebApi中获取前端headers中的值

    IEnumerable<string> origin;
    Request.Headers.TryGetValues("Origin", out origin);//获取Origin的值
  • 相关阅读:
    Activity与Fragment间的通信
    Activity生命周期.lanchMode.保存状态
    网络知识
    Android内存优化(使用SparseArray和ArrayMap代替HashMap)
    进程/线程死锁产生的原因以及如何避免死锁
    Android UI框架基本概念
    android在线源码
    y音频学习
    给 Android 开发者的 RxJava 详解
    设计模式之观察者模式
  • 原文地址:https://www.cnblogs.com/gonghui2016/p/12197117.html
Copyright © 2011-2022 走看看