Closed haileyham closed 3 months ago
Mixed Content ์๋ฌ๊ฐ Vercel์์ ๋๋ ๊ฒ์ ํ์ธ ํ ์ ์์๋๋ฐ, ์ด๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ๋ค์ ๊ตฌ๊ธ๋ง์ ํตํด์ ์ฝ๊ฒ ์ป์ ์ ์์๋ค.
๋ญ ํด๋น ์๋ฌ๋ฅผ ์ฝ๊ฒ ์ค๋ช ํ์๋ฉด
๐ฅ ์์ฒญ์ ๋ณด๋ด๋ ์น = ์ฐ๋ฆฌ๋ HTTPS ๋ก ๋ก๋๋์ง๋ง, ์์ฒญ์ ๋ฐ๋ ์น = API ๋ณด๋ด์ฃผ๋ ๊ณณ์ ๋ณด์์ด ์ทจ์ฝํ HTTP ํ๋กํ ์ฝ๋ก ๋์ด์์ด์ ๋ง์์คฌ์์ ์๋ ค์ฅผ
[์ฐธ๊ณ 1][Mixed content ๋ฌธ์ ํด๊ฒฐ(https ์ฌ์ดํธ์์ http ์ฌ์ดํธ ์์ฒญ ์ ๋ฐ์ํ๋ ๋ณด์ ๋ฌธ์ )](https://wellsw.tistory.com/34) [์ฐธ๊ณ 2][Next.js์์ Mixed Content ์๋ฌ ํด๊ฒฐํ๊ธฐ (feat. Proxy)](https://shiwoo.dev/posts/nextjs-mixed-content-proxy)
/** @type {import('next').NextConfig} */
const nextConfig = {}
module.exports = {
rewrites: () => [
{
source: "/job-openings",
destination: "http://study-now-pink.vercel.app/job-openings",
},
],
};
/** @type {import('next').NextConfig} */
const nextConfig = {}
module.exports = {
async headers() {
return [
{
// ๋ชจ๋ ๊ฒฝ๋ก์ ๋ํ CORS ํค๋ ์ถ๊ฐ
source: '/(.*)',
headers: [
{
key: 'Content-Security-Policy',
value: "upgrade-insecure-requests", // Mixed Content ์ค๋ฅ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ CSP ์ ์ฑ
์ค์
},
],
},
]
},
}
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
async rewrites() {
return [
{
source: '/job-openings',
destination: `http://openapi.seoul.go.kr:8088/${process.env.NEXT_PUBLIC_SEOUL}/json/GetJobInfo/1/16/%20/%20/%20/`,
},
];
},
};
module.exports = nextConfig;
๊ทธ๋์ ์ด๋ ๊ฒ ๋๋ค /job์ผ๋ก ํ๋๋ ์ ๋๋ก ๋์๋จ
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
async rewrites() {
return [
{
source: `/job`,
destination: `http://openapi.seoul.go.kr:8088/${process.env.NEXT_PUBLIC_SEOUL}/json/GetJobInfo/1/16/%20/%20/%20/`,
},
];
},
};
module.exports = nextConfig;
interface JobOpeningAPIOptions {
location: string;
}
export default async function jobOpeningAPI({
location,
}: JobOpeningAPIOptions) {
const apiKey = process.env.NEXT_PUBLIC_SEOUL; //์ถํ ๋ณ๊ฒฝ์์ dynamic ๋ฐฐํฌ์ ํ ๋๋ฌธ์ ์ผ๋จ public์ผ๋ก ํจใ
ใ
try {
const response = await fetch(`/job`);
if (response.ok) {
const data = await response.json();
return data;
} else {
const errorRes = await response.json();
console.error('Error:', errorRes);
throw new Error('Failed to fetch data');
}
} catch (error) {
console.error('Error', error);
throw error;
}
}
๐ Issue
๐ To Do
๐ฑ How to & Then
๐ฅ Memo
Originally posted by @haileyham in https://github.com/haileyham/study-now/issues/85#issuecomment-2002899702