#cors errors

1 messages · Page 1 of 1 (latest)

cinder bronze
#

edit: problem was a silly mistake, I had not ran npx convex deploy so the endpoints didnt exist in prod

why do I get cors error on this endpoint:

http.route({
  path: "/event",
  method: "OPTIONS",
  handler: httpAction(async (_ctx, request) => {
    const headers = request.headers;
    if (
      headers.get("Origin") !== null &&
      headers.get("Access-Control-Request-Method") !== null &&
      headers.get("Access-Control-Request-Headers") !== null
    ) {
      return new Response(null, {
        headers: new Headers({
          "Access-Control-Allow-Origin": "*",
          "Access-Control-Allow-Methods": "POST,PUT,OPTIONS",
          "Access-Control-Allow-Headers": "Content-Type, Digest, Authorization, Accept",
          "Access-Control-Max-Age": "86400",
        }),
      });
    } else {
      return new Response(null, {
        headers: new Headers(corsHeaders(request)),
      });
    }
  }),
});
function corsHeaders(request: Request): Record<string, string> {
  const requestedHeaders =
    request.headers.get("access-control-request-headers") ??
    "content-type,authorization,accept";
  const requestedMethod =
    request.headers.get("access-control-request-method") ??
    "GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS";

  return {
    "access-control-allow-origin": "*",
    "access-control-allow-methods": requestedMethod,
    "access-control-allow-headers": requestedHeaders,
    "access-control-allow-credentials": "false",
    "access-control-max-age": "86400",
    vary: "Origin, Access-Control-Request-Method, Access-Control-Request-Headers",
  };
}
fervent cipherBOT
#

Thanks for posting in #1088161997662724167.
Reminder: If you have a Convex Pro account, use the Convex Dashboard to file support tickets.

    - Provide context: What are you trying to achieve, what is the end-user interaction, what are you seeing? (full error message, command output, etc.)
    - Use [search.convex.dev](https://search.convex.dev) to search Docs, Stack, and Discord all at once.
    - Additionally, you can post your questions in the Convex Community's #1228095053885476985 channel to receive a response from AI.
    - Avoid tagging staff unless specifically instructed.

    Thank you!
cinder bronze
#

here is the PUT for the endpoint:

http.route({
  path: "/event",
  method: "PUT",
  handler: httpAction(async (ctx, request) => {
    try {
      const payload = await parseJsonObject(request);
      const event_code = requiredString(payload, "event_code", { exact: 5 });
      const edit_code = requiredString(payload, "edit_code", { exact: 5 });
      const name = requiredString(payload, "name", { max: 50 });
      const address = requiredString(payload, "address", { max: 100 });
      const date_time = requiredString(payload, "date_time", { max: 50 });

      const data = await ctx.runMutation(api.events.editEvent, {
        event_code,
        edit_code,
        name,
        address,
        date_time,
      });

      if (data.length === 0) {
        return jsonResponse(request, 404, {
          status: "error",
          message: "Event code or edit code is invalid",
        });
      }

      return jsonResponse(request, 200, {
        status: "success",
        message: "Event details edited!",
        data,
      });
    } catch (error) {
      if (error instanceof HttpError) {
        return jsonResponse(request, error.status, {
          status: "error",
          message: error.message,
        });
      }

      return jsonResponse(request, 500, {
        status: "error",
        message: `Unable to create event, full message: ${
          error instanceof Error ? error.message : String(error)
        }`,
      });
    }
  }),
});
cinder bronze
#

why is the OPTIONS handler not getting triggered?: