首页 文章

如何让lambda与ajax一起工作?

提问于
浏览
1

在向lambda endpoints 发出ajax请求时,我禁止403 . 这可能是一个CORS问题 .

serverless.yml

service: aws-nodejs # NOTE: update this with your service name
    provider:
    name: aws
    runtime: nodejs4.3

    functions:
    weather:
        handler: handler.weather
        events:
            - http:
                path: weather
                method: get
                cors: true

handler.js

'use strict';

    var request = require('request');

    module.exports.weather = (event, context, callback) => {
        request('http://api.openweathermap.org/data/2.5/weather?APPID=__ID__&lat=40.66&lon=-73.77', function (error, response, body) {
            if (!error && response.statusCode == 200) {
                const response = {
                    statusCode: 200,
                    headers: {
                        "Content-Type": "application/json",
                        "Access-Control-Allow-Origin": "*"
                    },
                    body: body
                };
                callback(null, response);
            }
        });
    };

我试图在API网关中启用CORS,但是我得到了无效的响应代码错误 . 


![enter image description here](https://www.javaroad.cn/files/images/11742b0e-e6c6-4639-ad97-cb50ff5ec4f2.png)


您能否建议如何修复错误以及可能导致错误的原因?

3 回答

  • 0

    确保在进行任何更改后部署API,例如添加CORS . 这几次我被咬了 .

  • 1

    如果您正在使用HTTP或Lambda'代理'集成,则非OPTIONS方法必须返回相关的CORS头(在本例中为Access-Control-Allow-Origin) . 如果您在GET方法上使用代理集成,那么您在控制台中看到的两个错误就可以了 . 配置后端以发回Access-Control-Allow-Origin标头,然后重试 .

  • 2

    如果您使用的是无服务器框架,则可以通过在函数的http事件下指定 cors: true 来轻松完成:

    functions:
      hello:
        handler: handler.hello
        events:
          - http:
              path: user/create
              method: get
              cors: true
    

    您可以在docs中找到更多详细信息 .

相关问题