溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

http請求header相關的幾個常見問題

發(fā)布時間:2020-07-18 02:59:51 來源:網(wǎng)絡 閱讀:952 作者:layveen 欄目:開發(fā)技術

http協(xié)議可能是目前web遠程調(diào)用領域最常用的協(xié)議,一如之前的soap協(xié)議。作為輕量級可靠傳輸協(xié)議,基于http協(xié)議的服務幾乎成了restful的代名詞,今天列舉幾個使用過程中http 相關的問題。

  1. 跨域
    大家也最常遇到,解決辦法也有很多,譬如在網(wǎng)關服務中引入CorsFilter,指定或者放開所有的域名和header。
@Bean
    public CorsFilter corsFilter() {
        final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        final CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true);
        config.addAllowedOrigin("*");  
        config.addAllowedHeader("*");
        config.addAllowedMethod("OPTIONS");
        config.addAllowedMethod("HEAD");
        config.addAllowedMethod("GET");
        config.addAllowedMethod("PUT");
        config.addAllowedMethod("POST");
        config.addAllowedMethod("DELETE");
        config.addAllowedMethod("PATCH");
        source.registerCorsConfiguration("/**", config);
        return new CorsFilter(source);
    }

另一種解決辦法是調(diào)整代理服務器如nginx。

add_header 'Access-Control-Allow-Origin' '$http_origin';
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, PUT, POST, DELETE, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Content-Type,*';
  1. 中文header
    http協(xié)議不支持中文header?。?!
    所以想要在header中傳遞中文信息,需要轉(zhuǎn)碼,接收端再解碼。

Base64.encodeBase64String(origin.getBytes("utf-8"));

  1. header丟失
    剛遇到的一個問題,request header中有個參數(shù)request_user_id, 認證服務攔截器發(fā)現(xiàn)request.getHeader取不到。一開始懷疑是apigateway的問題,查看了apigateway的代碼,發(fā)現(xiàn)只是普通的轉(zhuǎn)發(fā),并沒有重新代理請求,所以不存在這個問題;將請求地址改為ip重試(一開始請求的是域名地址),發(fā)現(xiàn)可以獲取header值,header參數(shù)的準入主要靠
    corsFilter的 config.addAllowedHeader(""),現(xiàn)在配置的是,也就是除了中文外的所有參數(shù)都應該能傳遞才對。
    重新梳理服務鏈路,域名解析-nginx-apigateway-目標服務,鎖定到nginx頭上。nginx內(nèi)部的設置,也是允許所有,但是nginx還有個限制,就是下劃線的參數(shù),會被忽略(坑?。。?br/>調(diào)整nginx的http參數(shù),打開下劃線參數(shù),重啟,問題得到解決。

underscores_in_headers on;

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI