如何在 C# 中使用 IronPDF 與 Cookie 進行安全的 PDF 生成

如何在 C# 中使用 HTTP 請求標頭

This article was translated from English: Does it need improvement?
Translated
View the article in English

在 C# 中,HTTP 請求標頭可讓您在使用 IronPDF 將 URL 轉換為 PDF 時,傳送額外的元資料,例如驗證憑證或自訂使用者代理程式。 只需建立一個標題字典,並在渲染前將其指派給 HttpRequestHeaders 屬性即可。

快速入門:在 PDF 渲染中新增 HTTP 標頭

  1. using NuGet 套件管理員安裝 https://www.nuget.org/packages/IronPdf

    PM > Install-Package IronPdf
  2. 請複製並執行此程式碼片段。

    new IronPdf.ChromePdfRenderer { RenderingOptions = { HttpRequestHeaders = new Dictionary<string,string> { { "Authorization", "Bearer your_token_here" }, { "User-Agent", "MyApp/1.0" } } } }
        .RenderUrlAsPdf("https://httpbin.org/bearer")
        .SaveAs("withHeaders.pdf");
  3. 部署至您的生產環境進行測試

    立即透過免費試用,在您的專案中開始使用 IronPDF

    arrow pointer

什麼是 HTTP 請求標頭?

HTTP 請求標頭是客戶端(例如網頁瀏覽器或 API 客戶端)在發出 HTTP 請求時傳送給伺服器的元資料。標頭提供有關請求的額外資訊,例如驗證詳細資料、內容類型、使用者代理程式等。

此功能用於將 URL 轉為 PDF 時,讓您能在發送請求時提供 HTTP 標頭資訊。在進行 URL 轉 PDF 轉換時,標頭對於存取受保護的內容或需要特定驗證機制的 API 至關重要。

IronPDF 的 HTTP 標頭支援功能與 Chrome PDF 渲染引擎無縫整合,確保您的標頭在渲染過程中能正確傳送。 這在處理受保護的網站或位於 TLS 驗證系統後方的網站時,尤為重要。

如何在 PDF 渲染中新增自訂頁首?

在使用 HttpRequestHeaders 屬性設定 HTTP 請求標頭之前,請先設計一個適當的 HTTP 請求標頭物件。 在渲染過程中,此標頭將包含在傳送至伺服器的 URL 請求中。 舉例來說,我們將使用 httpbin.org,這是一個有助於展示請求標頭的網站。

:path=/static-assets/pdf/content-code-examples/how-to/http-request-header.cs
using IronPdf;
using System.Collections.Generic;

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HttpRequestHeaders = new Dictionary<string, string>
{
    { "Authorization", "Bearer test-token-123" }
};

// Render PDF from authenticated page
var pdf = renderer.RenderUrlAsPdf("https://httpbin.org/bearer");
pdf.SaveAs("output.pdf");
Imports IronPdf
Imports System.Collections.Generic

Private renderer = New ChromePdfRenderer()
renderer.RenderingOptions.HttpRequestHeaders = New Dictionary(Of String, String) From {
	{"Authorization", "Bearer test-token-123"}
}

' Render PDF from authenticated page
Dim pdf = renderer.RenderUrlAsPdf("https://httpbin.org/bearer")
pdf.SaveAs("output.pdf")
$vbLabelText   $csharpLabel

處理多個標題

在處理複雜的驗證情境或 API 時,您通常需要傳送多個標頭。 以下是處理各種標題組合的方式:

using IronPdf;
using System.Collections.Generic;

var renderer = new ChromePdfRenderer();

// Configure multiple headers for API access
renderer.RenderingOptions.HttpRequestHeaders = new Dictionary<string, string>
{
    { "Authorization", "Bearer your-api-token" },
    { "Accept", "text/html,application/xhtml+xml" },
    { "Accept-Language", "en-US,en;q=0.9" },
    { "Cache-Control", "no-cache" },
    { "X-Custom-Header", "MyApplication/2.0" }
};

// Additional rendering options for better results
renderer.RenderingOptions.WaitFor.RenderDelay(500); // Wait for dynamic content
renderer.RenderingOptions.ViewPortWidth = 1920;
renderer.RenderingOptions.ViewPortHeight = 1080;

var pdf = renderer.RenderUrlAsPdf("https://api.example.com/report");
pdf.SaveAs("api-report.pdf");
using IronPdf;
using System.Collections.Generic;

var renderer = new ChromePdfRenderer();

// Configure multiple headers for API access
renderer.RenderingOptions.HttpRequestHeaders = new Dictionary<string, string>
{
    { "Authorization", "Bearer your-api-token" },
    { "Accept", "text/html,application/xhtml+xml" },
    { "Accept-Language", "en-US,en;q=0.9" },
    { "Cache-Control", "no-cache" },
    { "X-Custom-Header", "MyApplication/2.0" }
};

// Additional rendering options for better results
renderer.RenderingOptions.WaitFor.RenderDelay(500); // Wait for dynamic content
renderer.RenderingOptions.ViewPortWidth = 1920;
renderer.RenderingOptions.ViewPortHeight = 1080;

var pdf = renderer.RenderUrlAsPdf("https://api.example.com/report");
pdf.SaveAs("api-report.pdf");
Imports IronPdf
Imports System.Collections.Generic

Dim renderer As New ChromePdfRenderer()

' Configure multiple headers for API access
renderer.RenderingOptions.HttpRequestHeaders = New Dictionary(Of String, String) From {
    {"Authorization", "Bearer your-api-token"},
    {"Accept", "text/html,application/xhtml+xml"},
    {"Accept-Language", "en-US,en;q=0.9"},
    {"Cache-Control", "no-cache"},
    {"X-Custom-Header", "MyApplication/2.0"}
}

' Additional rendering options for better results
renderer.RenderingOptions.WaitFor.RenderDelay(500) ' Wait for dynamic content
renderer.RenderingOptions.ViewPortWidth = 1920
renderer.RenderingOptions.ViewPortHeight = 1080

Dim pdf = renderer.RenderUrlAsPdf("https://api.example.com/report")
pdf.SaveAs("api-report.pdf")
$vbLabelText   $csharpLabel

哪些 HTTP 標頭最常被使用?

  • 授權:傳送驗證憑證(Bearer 憑證、基本驗證等)
  • Content-Type:定義請求正文的格式(例如 application/json)
  • Accept:指定預期的回應格式(例如 text/html、application/json)
  • User-Agent:識別發出請求的客戶端(瀏覽器、API 客戶端等)
  • Referer:指稱連結至當前請求的來源頁面
  • Cookie:傳送 Cookie 以進行工作階段追蹤

在使用 Cookie 進行驗證時,您可以將 Cookie 標頭與其他驗證方法結合使用,以提升安全性。 IronPDF 中的自訂記錄功能可協助您在開發過程中排除與標頭相關的問題。

何時該使用自訂標頭?

在存取需要驗證的受保護資源、處理要求特定標頭的 API,或需要向伺服器識別您的應用程式時,自訂標頭至關重要。 它們特別適用於從經過驗證的網頁或 API 端點擷取 PDF 檔案。

常見應用情境包括:

  • 存取需經身份驗證的內部公司儀表板
  • 從需要 API 金鑰的 REST API 生成報告
  • 將經過驗證的 SaaS 應用程式頁面轉換為 PDF
  • 處理採用憑證式驗證的微服務

與驗證系統的整合

IronPDF 的標頭支援功能可與各種驗證系統無縫整合。 針對基本驗證情境:

using IronPdf;
using System;
using System.Text;

var renderer = new ChromePdfRenderer();

// Create Basic Auth header
string username = "user@example.com";
string password = "securepassword";
string credentials = Convert.ToBase64String(Encoding.UTF8.GetBytes($"{username}:{password}"));

renderer.RenderingOptions.HttpRequestHeaders = new Dictionary<string, string>
{
    { "Authorization", $"Basic {credentials}" }
};

// Render protected resource
var pdf = renderer.RenderUrlAsPdf("https://protected.example.com/report");
pdf.SaveAs("protected-report.pdf");
using IronPdf;
using System;
using System.Text;

var renderer = new ChromePdfRenderer();

// Create Basic Auth header
string username = "user@example.com";
string password = "securepassword";
string credentials = Convert.ToBase64String(Encoding.UTF8.GetBytes($"{username}:{password}"));

renderer.RenderingOptions.HttpRequestHeaders = new Dictionary<string, string>
{
    { "Authorization", $"Basic {credentials}" }
};

// Render protected resource
var pdf = renderer.RenderUrlAsPdf("https://protected.example.com/report");
pdf.SaveAs("protected-report.pdf");
Imports IronPdf
Imports System
Imports System.Text

Dim renderer = New ChromePdfRenderer()

' Create Basic Auth header
Dim username As String = "user@example.com"
Dim password As String = "securepassword"
Dim credentials As String = Convert.ToBase64String(Encoding.UTF8.GetBytes($"{username}:{password}"))

renderer.RenderingOptions.HttpRequestHeaders = New Dictionary(Of String, String) From {
    {"Authorization", $"Basic {credentials}"}
}

' Render protected resource
Dim pdf = renderer.RenderUrlAsPdf("https://protected.example.com/report")
pdf.SaveAs("protected-report.pdf")
$vbLabelText   $csharpLabel

若標頭缺失或錯誤會如何?

若標頭資訊遺漏或錯誤,可能會導致 401 未授權錯誤、403 禁止存取回應,或頁面渲染不完整。 請務必確認您的標頭值符合伺服器的預期,特別是驗證憑證和 API 金鑰。

若要排除頁首相關問題,建議使用 IronPDF 的除錯功能來檢視渲染過程。 常見問題包括:

  • 已過期的憑證或 API 金鑰
  • 標題格式不正確
  • 缺少必要的標頭
  • 區分大小寫的標頭名稱被誤打

進階標頭使用與動態內容

處理需要驗證且大量使用 JavaScript 網頁時,請將標頭與渲染延遲結合使用:

:path=/static-assets/pdf/content-code-examples/how-to/http-request-header.cs
using IronPdf;
using System.Collections.Generic;

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HttpRequestHeaders = new Dictionary<string, string>
{
    { "Authorization", "Bearer test-token-123" }
};

// Render PDF from authenticated page
var pdf = renderer.RenderUrlAsPdf("https://httpbin.org/bearer");
pdf.SaveAs("output.pdf");
Imports IronPdf
Imports System.Collections.Generic

Private renderer = New ChromePdfRenderer()
renderer.RenderingOptions.HttpRequestHeaders = New Dictionary(Of String, String) From {
	{"Authorization", "Bearer test-token-123"}
}

' Render PDF from authenticated page
Dim pdf = renderer.RenderUrlAsPdf("https://httpbin.org/bearer")
pdf.SaveAs("output.pdf")
$vbLabelText   $csharpLabel

標頭安全性的最佳實踐

處理敏感的驗證標頭時:

  1. 切勿硬編碼憑證:請將令牌和 API 金鑰儲存於安全的配置中
  2. 使用 HTTPS URL:傳送驗證標頭時,請務必從 HTTPS 端點進行渲染
  3. 定期輪替存取憑證:針對長期運行的應用程式實作憑證輪替機制
  4. 驗證 SSL 憑證:確保安全連線的憑證驗證正確無誤
  5. 監控標頭使用情況:記錄標頭使用情況以供安全稽核

如需更多安全性考量,請參閱 PDF 權限與密碼指南,以保護您生成的 PDF 檔案。

與現代網路應用程式的整合

現代的單頁應用程式 (SPAs) 和漸進式網路應用程式 (PWAs) 通常需要特定的標頭才能正確渲染。 以下是處理 OAuth 2.0 受保護資源的方法:

using IronPdf;
using System.Collections.Generic;
using System.Threading.Tasks;

public async Task<PdfDocument> GenerateOAuthProtectedPdf(string accessToken, string url)
{
    var renderer = new ChromePdfRenderer();

    // Configure OAuth headers
    renderer.RenderingOptions.HttpRequestHeaders = new Dictionary<string, string>
    {
        { "Authorization", $"Bearer {accessToken}" },
        { "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" }
    };

    // Set rendering options for SPAs
    renderer.RenderingOptions.WaitFor.RenderDelay(3000);
    renderer.RenderingOptions.EnableJavaScript = true;

    // Render and return the PDF
    return await Task.Run(() => renderer.RenderUrlAsPdf(url));
}
using IronPdf;
using System.Collections.Generic;
using System.Threading.Tasks;

public async Task<PdfDocument> GenerateOAuthProtectedPdf(string accessToken, string url)
{
    var renderer = new ChromePdfRenderer();

    // Configure OAuth headers
    renderer.RenderingOptions.HttpRequestHeaders = new Dictionary<string, string>
    {
        { "Authorization", $"Bearer {accessToken}" },
        { "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" }
    };

    // Set rendering options for SPAs
    renderer.RenderingOptions.WaitFor.RenderDelay(3000);
    renderer.RenderingOptions.EnableJavaScript = true;

    // Render and return the PDF
    return await Task.Run(() => renderer.RenderUrlAsPdf(url));
}
Imports IronPdf
Imports System.Collections.Generic
Imports System.Threading.Tasks

Public Async Function GenerateOAuthProtectedPdf(accessToken As String, url As String) As Task(Of PdfDocument)
    Dim renderer As New ChromePdfRenderer()

    ' Configure OAuth headers
    renderer.RenderingOptions.HttpRequestHeaders = New Dictionary(Of String, String) From {
        {"Authorization", $"Bearer {accessToken}"},
        {"Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"}
    }

    ' Set rendering options for SPAs
    renderer.RenderingOptions.WaitFor.RenderDelay(3000)
    renderer.RenderingOptions.EnableJavaScript = True

    ' Render and return the PDF
    Return Await Task.Run(Function() renderer.RenderUrlAsPdf(url))
End Function
$vbLabelText   $csharpLabel

若涉及更複雜的非同步操作情境,請考慮針對驗證失敗的情況實作重試邏輯。

結論

IronPDF 中的 HTTP 請求標頭提供了一種強大的方式,可存取並將經過驗證的網頁內容轉換為 PDF。 透過正確設定標頭,無論您使用的是簡單的 API 金鑰或複雜的 OAuth 系統,都能將 PDF 生成功能無縫整合至現有的驗證工作流程中。 請務必遵循安全最佳實務,並善用 IronPDF 豐富的渲染選項以獲得最佳效果。

常見問題

什麼是 HTTP 請求標頭?在建立 PDF 時為何需要它們?

HTTP 請求標頭是隨網頁請求一併傳送的元資料,提供額外資訊,例如驗證詳細資料、內容類型及使用者代理程式。當使用 IronPDF 將 URL 轉換為 PDF 時,您可以新增自訂標頭,以存取受保護的內容、需要驗證的 API,或位於安全系統後方的網站。這對於渲染受保護的網頁至關重要,若無適當的憑證,這些網頁將無法存取。

將 URL 轉換為 PDF/A 時,該如何新增自訂 HTTP 標頭?

若要在 IronPDF 中新增自訂 HTTP 標頭,請建立一個包含標頭鍵值對的字典,然後將其指派給 ChromePdfRenderer 的 RenderingOptions 中的 HttpRequestHeaders 屬性。設定標頭後,請使用 RenderUrlAsPdf 方法將 URL 轉換為 PDF。在渲染過程中,這些標頭將自動包含在傳送至伺服器的請求中。

能否在 PDF 渲染時一次新增多個 HTTP 標頭?

是的,IronPDF 允許您同時新增多個 HTTP 標頭。設定 HttpRequestHeaders 屬性時,只需將所有標頭的鍵值對納入同一個字典中即可。此功能對於複雜的驗證情境特別有用,例如您可能需要在一項請求中同時傳送授權代碼、自訂使用者代理程式、accept 標頭及其他元資料。

在 URL 轉 PDF 轉換過程中,可以使用哪些類型的驗證標頭?

IronPDF 支援多種驗證標頭,包括 Bearer 憑證、基本驗證、API 金鑰及自訂驗證方案。您可透過 HttpRequestHeaders 屬性新增這些標頭,藉此轉換受保護的網頁內容、存取需要特定驗證機制的 API,或處理位於 TLS 驗證系統後方的網站。

有沒有快速的方法,能用僅一行程式碼來渲染帶有標頭的 URL?

是的,IronPDF 提供了一行代碼的解決方案:new IronPdf.ChromePdfRenderer { RenderingOptions = { HttpRequestHeaders = new Dictionary { { "Authorization", "Bearer your_token_here" } } } }.RenderUrlAsPdf("https://your-url.com").SaveAs("output.pdf"). 這僅需一行程式碼,即可建立渲染器、設定標頭、渲染 URL 並儲存 PDF 檔案。

Curtis Chau
技術撰稿人

Curtis Chau 擁有卡爾頓大學(Carleton University)的電腦科學學士學位,專精於前端開發,並精通 Node.js、TypeScript、JavaScript 及 React。他熱衷於打造直觀且美觀的用戶介面,喜歡運用現代框架,並創建結構完善、視覺上吸引人的手冊。

除了開發工作之外,Curtis 對物聯網(IoT)抱有濃厚興趣,致力於探索整合硬體與軟體的創新方法。閒暇時,他喜歡玩遊戲和開發 Discord 機器人,將對科技的熱愛與創意相結合。

準備開始了嗎?
Nuget 下載 19,014,616 | 版本: 2026.5 just released
Still Scrolling Icon

還在往下捲動嗎?

想要快速確認成果嗎? PM > Install-Package IronPdf
執行範例 觀看您的 HTML 轉為 PDF。