Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: 3xx status code response through error when using it with fetch API #7659

Open
1 of 3 tasks
Ammar1999y opened this issue Sep 15, 2024 · 4 comments
Open
1 of 3 tasks

Comments

@Ammar1999y
Copy link

Ammar1999y commented Sep 15, 2024

Capacitor Version

Latest Dependencies:

@capacitor/cli: 6.1.2
@capacitor/core: 6.1.2
@capacitor/android: 6.1.2
@capacitor/ios: 6.1.2

Installed Dependencies:

@capacitor/cli: 6.1.2
@capacitor/core: 6.1.2
@capacitor/android: 6.1.2
@capacitor/ios: 6.1.2

[success] Android looking great! �

Other API Details

npm --version: 10.2.5
node -v: v20.11.1

Platforms Affected

  • Android
  • iOS
  • Web

Current Behavior

When I send a request to my server using fetch, the server get the request then send a response with 3xx status code, then the client throws TypeError: Failed to fetch, it's like adding redirect: "error" to the fetch request. However, when I use CapacitorHttp, everything works fine. I already have a website for my app, and everything works fine there. Did I do something wrong, or does fetch in Capacitor not handle 3xx status codes properly?

Expected Behavior

when using fetch api, and get response with 3xx status codes, the fetch api should not through error

Project Reproduction

https://github.com/Ammar1999y/fetch-error/blob/main/pages/_app.tsx

Additional Information

No response

@jcesarmobile
Copy link
Member

NEXT_PUBLIC_API_URL is undefined, can you also provide the server code doing the redirect and steps to reproduce?

@jcesarmobile jcesarmobile added the needs reply needs reply from the user label Oct 1, 2024
@ionitron-bot ionitron-bot bot removed the triage label Oct 1, 2024
@Ammar1999y
Copy link
Author

NEXT_PUBLIC_API_URL is undefined, can you also provide the server code doing the redirect and steps to reproduce?

NEXT_PUBLIC_API_URL is your server URL, I was using next.js at http://localhost:3001.

export async function GET() {
  return Response.json({ redirectByClient: "/home" /* Let the client to deal with the redirect */ }, {
    status: 307,
    headers: {
      "Access-Control-Allow-Origin": "*", 
      "Access-Control-Allow-Headers":
        "Content-Type, Authorization, content-type, authorization",
      "Content-Type": "application/json; charset=utf-8"
    },
  }); 
}
export function OPTIONS() {
  return new Response(null, {
    status: 204,
    headers: {
      "Access-Control-Allow-Origin": "*",
      "Access-Control-Allow-Methods": "GET,PUT,POST,DELETE",
      "Access-Control-Allow-Headers":
        "Content-Type, Authorization, content-type, authorization"
    },
  });
}

then I use redirectByClient on the client (front-end) side to redirect user if the status is 3xx, i even tried to add Location header, and all 3xx status code give this error.

And this is an example of Response headers from the server:

Access-Control-Allow-Headers:
Content-Type, Authorization, content-type, authorization
Access-Control-Allow-Origin:
*
Age:
0
Cache-Control:
public, max-age=0, must-revalidate
Content-Type:
application/json; charset=utf-8
Date:
Tue, 08 Oct 2024 05:39:55 GMT
Referrer-Policy:
strict-origin
Server:
Vercel
Strict-Transport-Security:
max-age=63072000; includeSubDomains; preload
Vary:
RSC, Next-Router-State-Tree, Next-Router-Prefetch
X-Vercel-Cache:
MISS
X-Vercel-Id:
cdg1::fra1::tvszr-1728365995088-0127de6d2a07

@Ionitron Ionitron removed the needs reply needs reply from the user label Oct 8, 2024
@jcesarmobile
Copy link
Member

I meant a whole server project, not just a copy/paste of the file.

@jcesarmobile jcesarmobile added the needs reply needs reply from the user label Oct 8, 2024
@Ammar1999y
Copy link
Author

Ammar1999y commented Oct 8, 2024

I meant a whole server project, not just a copy/paste of the file.

This is the client code and this is the sever code, and API URL https://server-gamma-eosin.vercel.app/api/redirect

I realize that when adding

  "plugins": {
    "CapacitorHttp": {
      "enabled": true
    }
  }

to capacitor.config.json every fetch with 3xx status code response gives that error.

@Ionitron Ionitron removed the needs reply needs reply from the user label Oct 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants