跳到主要內容

[ASP.NET] 網頁透過iframe內嵌外部網頁,遇到的問題( Cross-Origin Requests (CORS)、X-Frame-Options、session & cookie)

一般網站在一些需要整合外部網站資源的時候,簡單的方式就是透過Web service API取得資料,在行整理運用在自己的網站上。但有時候不是單純取得資料,而要直接顯示外網站的某個網頁在自己的網頁上時,作法通常是用iframe將網頁顯示在iframe範圍內。

這個時候就要注意一些地方,否則iframe的網頁會無法正常執行。

整理如下:

1. Cross-Origin的設定

    ASP.NET Core 2 系列 - 跨域請求 (Cross-Origin Requests)

2. X-Frame-Options的設定

    In Startup.cs - ConfigureServices() :
//把每個 Requset 的X-Frame-Options都移除
services.AddAntiforgery(o => o.SuppressXFrameOptionsHeader = true);

3. session & cookie的設定

    將 cookie 的 SameSite 設為 None
    In Startup.cs - ConfigureServices() :
            services.AddSession(options =>
            {
                options.Cookie.Name = ".MgvInfoSpServer.Session";
                // Timeout for clear session.
                //options.IdleTimeout = TimeSpan.FromHours(2);//.FromSeconds(10);
                options.Cookie.HttpOnly = true;
                options.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.None;
                //options.Cookie.SecurePolicy = CookieSecurePolicy.None;
            });

留言