fix content-type not set regression on main proxy handler

This commit is contained in:
Kevin Pham
2023-12-07 09:58:52 -06:00
parent 1ebb486592
commit df19209211
4 changed files with 16 additions and 9 deletions

View File

@@ -20,6 +20,7 @@ func NewOutlineHandler(path string, opts *ProxyOptions) fiber.Handler {
rx.SpoofReferrerFromGoogleSearch(),
).
AddResponseModifications(
tx.ForwardResponseHeaders(),
tx.DeleteIncomingCookies(),
tx.RewriteHTMLResourceURLs(),
tx.GenerateReadableOutline(), // <-- this response modification does the outline rendering

View File

@@ -43,7 +43,7 @@ func NewProxySiteHandler(opts *ProxyOptions) fiber.Handler {
//rx.RequestArchiveIs(),
).
AddResponseModifications(
//tx.ForwardResponseHeaders(),
tx.ForwardResponseHeaders(),
//tx.BlockThirdPartyScripts(),
tx.DeleteIncomingCookies(),
tx.DeleteLocalStorageData(),
@@ -53,11 +53,16 @@ func NewProxySiteHandler(opts *ProxyOptions) fiber.Handler {
tx.RewriteHTMLResourceURLs(),
tx.PatchDynamicResourceURLs(),
tx.PatchTrackerScripts(),
//tx.BlockElementRemoval(".article-content"), // techcrunch
tx.BlockElementRemoval(".available-content"), // substack
tx.BlockElementRemoval(".article-content"), // techcrunch
//tx.BlockElementRemoval(".available-content"), // substack
// tx.SetContentSecurityPolicy("default-src * 'unsafe-inline' 'unsafe-eval' data: blob:;"),
)
// no options passed in, return early
if opts == nil {
return proxychain.Execute()
}
// load ruleset
rule, exists := opts.Ruleset.GetRule(proxychain.Request.URL)
if exists {

View File

@@ -29,7 +29,6 @@ func NewRulesetSiteHandler(opts *ProxyOptions) fiber.Handler {
return c.Send([]byte(jsn))
default:
// TODO: the ruleset.MarshalYAML() method is currently broken and panics
yml, err := opts.Ruleset.YAML()
if err != nil {
return err

View File

@@ -525,12 +525,14 @@ func (chain *ProxyChain) Execute() error {
return errors.New("no context set")
}
// TODO: this seems broken
// in case api user did not set or forward content-type, we do it for them
ct := chain.Context.Response().Header.Peek("content-type")
CT := chain.Context.Response().Header.Peek("Content-Type")
if ct == nil && CT == nil {
/*
ct := string(chain.Context.Response().Header.Peek("content-type"))
if ct == "" {
chain.Context.Set("content-type", chain.Response.Header.Get("content-type"))
}
*/
// Return request back to client
return chain.Context.SendStream(body)