DEV Community

Cover image for Fetch any Website HTML without a cors error | Free API

Fetch any Website HTML without a cors error | Free API

Sh Raj on March 11, 2024

Fetch any Website HTML without a cors error | Free API If you want to fetch some website's HTML content or want to scrap that using J...
Collapse
 
sh20raj profile image
Sh Raj

Which is better

Collapse
 
sh20raj profile image
Sh Raj

CORS Error Fixed Here

import { NextResponse } from "next/server";


let i = async (url) => {
  let data = await fetch(url || 'https://example.com');
  data = await data.text();
  return data;
}

function getParameterByName(name, url = window.location.href) {
  name = name.replace(/\[\\\[\\\]\]/g, '\\\\$&');
  var regex = new RegExp('\[?&\]' + name + '(=(\[^&#\]\*)|&|#|$)'),
    results = regex.exec(url);
  if (!results) return null;
  if (!results[2]) return '';
  return decodeURIComponent(results[2].replace(/\\+/g, ' '));
}

export async function GET(req, res) {

  const { url: rawUrl } = req;
  const url = getParameterByName("url", rawUrl);
  console.log(rawUrl);

  const result = await i(url);

  return new NextResponse(result, {
    status: 200,
    headers: {
      'Access-Control-Allow-Origin': '*',
      'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
      'Access-Control-Allow-Headers': 'Content-Type, Authorization',
    }
  });
}
Enter fullscreen mode Exit fullscreen mode
Collapse
 
sh20raj profile image
Sh Raj
import { NextResponse } from "next/server";
import Cors from 'cors';

const cors = Cors({
  methods: ['GET'],
  origin: '*'
});

let i = async (url) => {
  try {
    const response = await fetch(url || 'https://example.com');
    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }
    const data = await response.text();
    return data;
  } catch (error) {
    console.error('Error:', error);
    throw error;
  }
}

function getParameterByName(name, url = window.location.href) {
  const urlObj = new URL(url);
  return urlObj.searchParams.get(name);
}

export async function GET(req, res) {
  try {
    await cors(req, res);

    const { url: rawUrl } = req;
    const url = getParameterByName("url", rawUrl);
    console.log(rawUrl);

    const result = await i(url);

    return new NextResponse(result, { status: 200 });
  } catch (error) {
    console.error('Error:', error);
    return new NextResponse('An error occurred while processing the request.', { status: 500 });
  }
}
Enter fullscreen mode Exit fullscreen mode
Collapse
 
sh20raj profile image
Sh Raj
import { NextResponse } from "next/server";
import Cors from 'cors';

const cors = Cors({
  methods: ['GET'],
});

let i = async (url) => {
  let data = await fetch(url || 'https://example.com');
  data = await data.text();
  return data;
}

function getParameterByName(name, url = window.location.href) {
  name = name.replace(/\[\\\[\\\]\]/g, '\\\\$&');
  var regex = new RegExp('\[?&\]' + name + '(=(\[^&#\]\*)|&|#|$)'),
    results = regex.exec(url);
  if (!results) return null;
  if (!results[2]) return '';
  return decodeURIComponent(results[2].replace(/\\+/g, ' '));
}

export async function GET(req, res) {
  await cors(req, res);

  const { url: rawUrl } = req;
  const urlSearchParams = new URLSearchParams(rawUrl.search);
  const url = getParameterByName("url", rawUrl);
  console.log(rawUrl);

  const result = await i(url);

  return new NextResponse(`${result}`);
}
Enter fullscreen mode Exit fullscreen mode