第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在 java 中的 AWS lambda 函數(shù)中包含 Access-control-header

在 java 中的 AWS lambda 函數(shù)中包含 Access-control-header

滄海一幻覺(jué) 2022-07-06 09:59:34
我一直在嘗試部署一個(gè) lambda 函數(shù),然后通過(guò) API 網(wǎng)關(guān)使其可訪(fǎng)問(wèn)。我的 java 函數(shù)在 JAVA 中,這是我在 JAVA 中創(chuàng)建一個(gè)簡(jiǎn)單的 AWS lambda 函數(shù)所遵循的文檔:https://docs.aws.amazon.com/lambda/latest/dg/java-handler-io-type-pojo.html這是我的函數(shù)處理程序的外觀(guān):package lambda;    import com.amazonaws.services.lambda.runtime.Context;    import com.amazonaws.services.lambda.runtime.RequestHandler;    import lambda.axon.Path;    public class shortestPath implements RequestHandler<RequestClass, ResponseClass>{        public ResponseClass handleRequest(RequestClass request, Context context){            String inputString = request.inputString;            int steps = Path.stepsTo(inputString);            return new ResponseClass(steps);        }    }這是這個(gè)請(qǐng)求類(lèi):package lambda;public class RequestClass {    String inputString;    public String getInputString() {        return inputString;    }    public void setInputString(String inputString) {        this.inputString = inputString;    }    public RequestClass(String inputString) {        this.inputString = inputString;    }    public RequestClass() {    }}這是響應(yīng)類(lèi):package lambda;public class ResponseClass {    int steps;    public ResponseClass(int steps) {        this.steps = steps;    }    public ResponseClass() {    }    public int getSteps() {        return steps;    }    public void setSteps(int steps) {        this.steps = steps;    }}我在aws上部署它并配置AWS api網(wǎng)關(guān)來(lái)觸發(fā)它,當(dāng)我使用郵遞員時(shí),當(dāng)我到達(dá)API網(wǎng)關(guān)給出的端點(diǎn)時(shí)一切正常(https://www.getpostman.com/)但是通過(guò)瀏覽器嘗試相同的操作會(huì)給我一個(gè) CORS 錯(cuò)誤:Access to XMLHttpRequest at 'https://<hash>execute-api.us-east-1.amazonaws.com/dev' from origin 'http://localhost:4200' has been blocked by CORS policy: Request header field access-control-allow-origin is not allowed by Access-Control-Allow-Headers in preflight response.我嘗試在 API 網(wǎng)關(guān)控制臺(tái)中啟用 CORS,然后重新部署它:這篇 Stackoverflow 帖子(在 AWS Lambda 上配置 CORS 響應(yīng)標(biāo)頭?)說(shuō)如果我使用 lambda-proxy,我應(yīng)該在處理程序響應(yīng)本身中包含標(biāo)頭,我不確定代理是什么,但我如何用我當(dāng)前的Lambda 函數(shù)的實(shí)現(xiàn),即在我的響應(yīng)中包含自定義標(biāo)頭
查看完整描述

2 回答

?
largeQ

TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊

要啟用cors連接到 lambda 函數(shù)的 api 網(wǎng)關(guān)端點(diǎn),您必須為 api 端點(diǎn)啟用 cors(您已經(jīng)完成)并配置您的 lambda 函數(shù) suport cors。


按照我的例子:


// new respose class, replace for your class - ResponseClass

public class Response {


    private int statusCode; // http status code


    private Map<String, String> headers; // headers


    private String body; // body - what you want to return to client


    public Response(int statusCode, Map<String, String> headers, String body) {

        this.statusCode = statusCode;

        this.headers = headers;

        this.body = body;

    }


    public int getStatusCode() {

        return statusCode;

    }


    public Map<String, String> getHeaders() {

        return headers;

    }


    public String getBody() {

        return body;

    }


    public void setStatusCode(int statusCode) {

        this.statusCode = statusCode;

    }


    public void setHeaders(Map<String, String> headers) {

        this.headers = headers;

    }


    public void setBody(String body) {

        this.body = body;

    }


}


/// -------------


package lambda;


    import com.amazonaws.services.lambda.runtime.Context;

    import com.amazonaws.services.lambda.runtime.RequestHandler;

    import lambda.axon.Path;


    public class shortestPath implements RequestHandler<RequestClass, Response>{


        public Response handleRequest(RequestClass request, Context context){

            String inputString = request.inputString;

            int steps = Path.stepsTo(inputString);


            Map<String, String> headers = new HashMap<>();

            headers.put(Access-Control-Allow-Origin, "*"); // cors header, you can add another header fields


            return new Response(200, headers, "" + steps);

            // return new Response(200, headers, "{result: " + steps + "}");

            // simple json response. ex: {result: '3433"}

        }

    }

我的方式僅在 api 網(wǎng)關(guān)使用LAMBDA-PROXY事件配置時(shí)生效(默認(rèn))

http://img1.sycdn.imooc.com//62c4ecae00018a5709200454.jpg

查看完整回答
反對(duì) 回復(fù) 2022-07-06
?
慕哥9229398

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊

您可以從 api 網(wǎng)關(guān)啟用 cors 您可以從 lambda 管理 cors 并從 lambda 管理標(biāo)頭。


我建議從 api 網(wǎng)關(guān)啟用 cors 并測(cè)試它是否可以工作。


你可以管理access-control-origin并headers喜歡這種方式


'use strict';


module.exports.hello = function(event, context, callback) {


const response = {

  statusCode: 200,

  headers: {

    "Access-Control-Allow-Origin" : "*", // Required for CORS support to work

    "Access-Control-Allow-Credentials" : true // Required for cookies, authorization headers with HTTPS 

  },

  body: JSON.stringify({ "message": "Hello World!" })

};


callback(null, response);

};

您可以參考此文檔: https ://serverless.com/framework/docs/providers/aws/events/apigateway/


查看完整回答
反對(duì) 回復(fù) 2022-07-06
  • 2 回答
  • 0 關(guān)注
  • 159 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)