欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

CORS跨域問題常用解決方法代碼實(shí)例

 更新時(shí)間:2020年11月16日 10:49:39   作者:侯賽雷  
這篇文章主要介紹了CORS跨域問題常用解決方法代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一 后端服務(wù)器使用過濾器

新建過濾器:

/**
 * 解決跨域
 */
public class AccessControlAllowOriginFilter implements Filter {
  @Override
  public void init(FilterConfig filterConfig) throws ServletException { }

  @Override
  public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    System.out.println("解決跨域請(qǐng)求");
    HttpServletResponse response = (HttpServletResponse) servletResponse;
    response.setHeader("Access-Control-Allow-Origin", "*");//允許所有網(wǎng)站跨域訪問
    response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
    response.setHeader("Access-Control-Allow-Credentials", "true");    //這里如果前端請(qǐng)求header首字母是小寫也是不行得,所以大小寫都寫上就沒問題了
    response.setHeader("Access-Control-Allow-Headers", "access-control-allow-origin,content-type,x-requested-with,Content-Type,Access-Control-Allow-Headers,Content-Length,Accept,Authorization,X-Requested-With");
    filterChain.doFilter(servletRequest, response);
  }

  @Override
  public void destroy() {}
}

前端header需要添加:

$.ajax( {
      url : 'http://c2.zhuzher.com/pdm/know/active?hotelid=808047&sdate=2019-11-09&edate=2019-11-11',
      beforeSend: function (xhr) {
          xhr.setRequestHeader("Access-Control-Allow-Origin", "*"); //設(shè)置跨域訪問信息
          xhr.setRequestHeader("Content-Type", "application/json;charset=utf-8");
      },
      type : 'get',
      dataType : 'json',
      data:{},
      success : function(data) {
        alert(1111);
      }
    });

二 后端接口springboot/springmvc使用注解

springMVC的版本要在4.2或以上版本才支持@CrossOrigin ;

方法需要指明Get或者POST才行:

三 本地nginx反向代理(推薦)

本地下載解壓nginx,添加一個(gè)server配置文件:

注意,如果是放在nginx的html目錄下一般是不需要加跨域配置的,否則會(huì)報(bào)配置多余錯(cuò)誤

每次可先直接使用試試,不行再加下面add_header等配置.

###start跨域支持配置####
  add_header Access-Control-Allow-Origin '*';
  add_header Access-Control-Allow-Headers Accept,Origin,X-Requested-With,Content-Type,If-Modified-Since,Last-Modified,Content-Length,Content-Range,Range,Content-Description,Content-Disposition;
  add_header Access-Control-Allow-Methods GET,POST,PUT,DELETE,OPTIONS;
  add_header Access-Control-Request-Headers Content-Disposition;
  add_header Access-Control-Allow-Credentials true;

  ###end ###

  server {
    listen    80;
    server_name 127.0.0.1;

    #charset koi8-r;

    #access_log logs/host.access.log main;

    location / {
      root  html;
      index index.html index.htm;
    }
    
    #自定義本地路徑,代理轉(zhuǎn)發(fā)請(qǐng)求
    location /pdm    {
      proxy_pass  http://c2.zhuzher.com/pdm;
    }

  }
  
  server {
    listen    8081;
    server_name 127.0.0.1;

    #charset koi8-r;

    #access_log logs/host.access.log main;

    location / {
      root  html;
      index index.html index.htm;
    }
    
    #自定義本地路徑,代理轉(zhuǎn)發(fā)請(qǐng)求
     location /pdm    {
      proxy_pass http://c2.zhuzher.com/pdm;
      charset utf-8;
      #  proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;    
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }

  }

項(xiàng)目里面直接調(diào)用配置的8081端口就可以了:

api.get('//localhost:8081/pdm/user/login',data)

注意這里還有一點(diǎn)需要注意,如果Content-Type是 application/json的話是無法發(fā)送跨域請(qǐng)求的,這里提供一種解決辦法,就是接口前端請(qǐng)求type改成

'Content-Type':'text/plain'

發(fā)送數(shù)據(jù)轉(zhuǎn)成字符串:

JSON.stringify(data)

后端接口用String接受數(shù)據(jù),然后再轉(zhuǎn)成對(duì)象就可以了:

@PostMapping("/distributeBatch")
  public ResMsg distributeSaleBatch(@RequestBody String params){
    System.out.println(params);
    //Integer user_id, Integer customer_id
    //Gson 字符串轉(zhuǎn)對(duì)象
    List<Map<String, Integer>> fromJson = new Gson().fromJson(params, new TypeToken<List<Map<String, Integer>>>() {
    }.getType());
    System.out.println(new Gson().toJson(fromJson));
    return registeredCustomerService.distributeSaleBatch(fromJson);
  }

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • mybatis-plus自動(dòng)生成代碼的示例代碼

    mybatis-plus自動(dòng)生成代碼的示例代碼

    這篇文章主要介紹了mybatis-plus自動(dòng)生成代碼的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Java取整與四舍五入

    Java取整與四舍五入

    本文詳細(xì)講解了Java取整與四舍五入,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • 利用Spring插件實(shí)現(xiàn)策略模式的案例詳解

    利用Spring插件實(shí)現(xiàn)策略模式的案例詳解

    Spring插件提供了一種更實(shí)用的插件開發(fā)方法,它提供了插件實(shí)現(xiàn)擴(kuò)展核心系統(tǒng)功能的核心靈活性,但當(dāng)然不提供核心OSGi功能,如動(dòng)態(tài)類加載或運(yùn)行時(shí)安裝和部署插件,本文就來聊下如何使用spring插件來實(shí)現(xiàn)策略模式,需要的朋友可以參考下
    2023-05-05
  • java中使用Files.readLines()處理文本中行數(shù)據(jù)方式

    java中使用Files.readLines()處理文本中行數(shù)據(jù)方式

    這篇文章主要介紹了java中使用Files.readLines()處理文本中行數(shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java中classpath講解及使用方式

    Java中classpath講解及使用方式

    本文詳細(xì)講解了Java中classpath講解及使用方式,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-12-12
  • Java操作另一個(gè)Java程序使其重啟的簡單實(shí)現(xiàn)

    Java操作另一個(gè)Java程序使其重啟的簡單實(shí)現(xiàn)

    下面小編就為大家?guī)硪黄狫ava操作另一個(gè)Java程序使其重啟的簡單實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • SpringBoot主鍵ID傳到前端后精度丟失的問題解決

    SpringBoot主鍵ID傳到前端后精度丟失的問題解決

    這篇文章主要通過示例為大家詳細(xì)介紹一些SpringBoot如何解決雪花算法主鍵ID傳到前端后精度丟失問題,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-05-05
  • JAVA 中實(shí)現(xiàn)整句漢字拆分、轉(zhuǎn)換為ASCII實(shí)例詳解

    JAVA 中實(shí)現(xiàn)整句漢字拆分、轉(zhuǎn)換為ASCII實(shí)例詳解

    這篇文章主要介紹了JAVA 中實(shí)現(xiàn)整句漢字拆分、轉(zhuǎn)換為ASCII實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • IDEA中解決 git pull 沖突的方法

    IDEA中解決 git pull 沖突的方法

    這篇文章主要介紹了IDEA中解決 git pull 沖突的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Java將字節(jié)轉(zhuǎn)換為十六進(jìn)制代碼分享

    Java將字節(jié)轉(zhuǎn)換為十六進(jìn)制代碼分享

    我們知道,在java中,一個(gè)byte 就是一個(gè)字節(jié),也就是八個(gè)二進(jìn)制位;而4個(gè)二進(jìn)制位就可以表示一個(gè)十六進(jìn)制位,所以一個(gè)byte可以轉(zhuǎn)化為2個(gè)十六進(jìn)制位。下面我們就來詳細(xì)看下具體方法吧。
    2016-01-01

最新評(píng)論