<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Navya Arora</title>
    <description>The latest articles on Forem by Navya Arora (@navyaarora01).</description>
    <link>https://forem.com/navyaarora01</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F801357%2F32069b2f-d6d6-4316-a3f0-7acc1c2b70c5.jpeg</url>
      <title>Forem: Navya Arora</title>
      <link>https://forem.com/navyaarora01</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/navyaarora01"/>
    <language>en</language>
    <item>
      <title>Provisioning Cloud Resources with Crossplane on Kubernetes🚀</title>
      <dc:creator>Navya Arora</dc:creator>
      <pubDate>Sat, 25 Oct 2025 11:49:00 +0000</pubDate>
      <link>https://forem.com/navyaarora01/provisioning-cloud-resources-with-crossplane-on-kubernetes-2h49</link>
      <guid>https://forem.com/navyaarora01/provisioning-cloud-resources-with-crossplane-on-kubernetes-2h49</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Crossplane extends kubernetes from just being an application orchestrator to universal control plane for cloud infrastructure. This article can help you to understand what crossplane is and how it helps in provisioning the cloud resources in a declarative way in kubernetes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Introduction: The problem space⚠️
&lt;/h2&gt;

&lt;p&gt;Provisioning cloud resources has always been a key part of infrastructure management. In any organisational codebases, there would be many services co-existing and each service would have its databases, storage buckets, service accounts - often across multiple cloud providers like GCP, AWS or Azure. &lt;/p&gt;

&lt;p&gt;For provisioning and managing these resouces, &lt;em&gt;Infrastructure as Code&lt;/em&gt; (IaC) tools like terraform or cloudformative emerged which helped in bringing the structure and in defining infrastructure declaratively in configuration files. But they don’t continuously reconcile the actual state of your infrastructure.&lt;/p&gt;

&lt;p&gt;Meanwhile, kubernetes reformed how we manage our applications and introduced the concepts of control planes that continuously ensures the actual cluster state matches the desired state defined by YAML manifests. I would assume that if you are giving this article a read you would have some basic understanding of how kubernetes works😄&lt;/p&gt;

&lt;p&gt;It defines the objects(deployments and services) declaratively and &lt;br&gt;
ensures the system always matches our intent. And this intrigues the question that — &lt;em&gt;why can’t we manage cloud infrastructure in the same way&lt;/em&gt;⁉️&lt;/p&gt;

&lt;p&gt;And here enters &lt;strong&gt;Crossplane&lt;/strong&gt; which extends Kubernetes’ model beyond container orchestration into the realm of infrastructure orchestration.&lt;/p&gt;
&lt;h2&gt;
  
  
  What Crossplane is and how it works?🤔
&lt;/h2&gt;

&lt;p&gt;Crossplane is an abstraction layer that lets you provision and orchestrate cloud resources across multiple vendors in a &lt;strong&gt;declarative&lt;/strong&gt; way using a &lt;strong&gt;single unified API&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It acts like an universal remote control for cloud services and along with this, brings 2 major advantages:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Workload portability&lt;/strong&gt; – This allows dev teams to build applications that can run on any cloud provider without any modifications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reconciliation loop&lt;/strong&gt; – This ensures that the state of your deployment matches the state of the configuration you passed in.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foj53flyl5ma8heic4406.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foj53flyl5ma8heic4406.png" alt="Crossplane architecture" width="800" height="242"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  How to deploy ☁️ resources using crossplane?
&lt;/h2&gt;
&lt;h4&gt;
  
  
  Set up crossplane in kubernetes cluster
&lt;/h4&gt;

&lt;p&gt;You can install Crossplane with Helm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm repo add crossplane-stable https://charts.crossplane.io/stable
helm repo update
helm install crossplane --namespace crossplane-system --create-namespace crossplane-stable/crossplane
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then verify:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get pods -n crossplane-system
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once it’s running, Crossplane becomes part of your cluster — ready to manage infrastructure.🚀&lt;/p&gt;

&lt;h4&gt;
  
  
  ► Install a Cloud Provider
&lt;/h4&gt;

&lt;p&gt;Crossplane itself is cloud-neutral. You add providers for the clouds you want to manage.&lt;/p&gt;

&lt;p&gt;For example, install the AWS provider:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl crossplane install provider crossplane/provider-aws:v0.38.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Similarly, you can install:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;crossplane/provider-gcp
crossplane/provider-azure
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check your installed providers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get providers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This step adds new CRDs (Custom Resource Definitions) like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;S3Bucket&lt;/li&gt;
&lt;li&gt;RDSInstance&lt;/li&gt;
&lt;li&gt;VPC&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  ► Configure Provider Credentials
&lt;/h4&gt;

&lt;p&gt;You need to give Crossplane permission to talk to your cloud account.&lt;/p&gt;

&lt;p&gt;Example (AWS):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a Kubernetes Secret with your AWS credentials:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl create secret generic aws-creds -n crossplane-system --from-file=creds=./aws-credentials.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Reference it in a ProviderConfig:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: aws.crossplane.io/v1beta1
kind: ProviderConfig
metadata:
  name: default
spec:
  credentials:
    source: Secret
    secretRef:
      namespace: crossplane-system
      name: aws-creds
      key: creds
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This tells Crossplane how to authenticate when creating AWS resources.&lt;/p&gt;

&lt;h4&gt;
  
  
  ► Create a Cloud Resource (Example: AWS S3 Bucket)
&lt;/h4&gt;

&lt;p&gt;Now, you can define a resource just like any other Kubernetes object.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: s3.aws.crossplane.io/v1beta1
kind: Bucket
metadata:
  name: demo-bucket
spec:
  forProvider:
    locationConstraint: us-east-1
  providerConfigRef:
    name: default
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Apply it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f bucket.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Crossplane’s controller will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connect to AWS using the credentials you provided,&lt;/li&gt;
&lt;li&gt;Create the bucket,&lt;/li&gt;
&lt;li&gt;Continuously reconcile its state.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check its status:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get bucket
kubectl describe bucket demo-bucket
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When you see Ready: True, your cloud resource is live 🎉&lt;/p&gt;

&lt;h4&gt;
  
  
  ► Clean Up
&lt;/h4&gt;

&lt;p&gt;When you delete the YAML manifest, Crossplane destroys the real cloud resource too:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl delete -f bucket.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s full lifecycle management — declarative and reversible.&lt;/p&gt;

&lt;h3&gt;
  
  
  Troubleshooting
&lt;/h3&gt;

&lt;p&gt;The easiest way to check if your resources are properly deployed is to check the claim. You can do&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl get claim -n &amp;lt;namespace&amp;gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If both synced and ready are true on your claim your resources should be deployed properly and ready for use. If any of them are false, firstly it could just be that it haven’t had enough time to deploy the resource, creating the resources can take some time, but if that is not the case then the most common place you could find info about potential errors is by describing the composite resource (not the claim) and looking at the events. &lt;/p&gt;

&lt;p&gt;Hope you find this article insightful and if you want to explore more in this domain, you can always refer the &lt;a href="https://docs.crossplane.io/v2.0/" rel="noopener noreferrer"&gt;crossplane&lt;/a&gt; documentation to dive deep into it.&lt;/p&gt;

</description>
      <category>crossplane</category>
      <category>kubernetes</category>
      <category>programming</category>
      <category>devops</category>
    </item>
    <item>
      <title>React MUI Content Security Policy</title>
      <dc:creator>Navya Arora</dc:creator>
      <pubDate>Sun, 28 May 2023 19:00:48 +0000</pubDate>
      <link>https://forem.com/navyaarora01/react-mui-content-security-policy-2gp</link>
      <guid>https://forem.com/navyaarora01/react-mui-content-security-policy-2gp</guid>
      <description>&lt;p&gt;&lt;a href="https://mui.com/" rel="noopener noreferrer"&gt;Material-UI&lt;/a&gt; is a user interface library that provides predefined and customizable React components for faster and easy web development, these Material-UI components are based on top of Material Design by Google. In this article let’s discuss the Hidden component in the Material-UI library.&lt;br&gt;
When using Material-UI (also known as MUI) with React, it's important to set up a &lt;strong&gt;Content Security Policy (CSP)&lt;/strong&gt; to ensure that your app is secure against &lt;a href="https://owasp.org/www-community/attacks/xss/" rel="noopener noreferrer"&gt;cross-site scripting (XSS)&lt;/a&gt; attacks. A set of rules that specify which content can be loaded by web page is known as CSP. It helps to prevent XSS attacks on the web page.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const csp = `
  default-src 'self';
  script-src 'self';
  style-src 'self';
`;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Basic Setup:&lt;/strong&gt; Follow the below steps to create the application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Create a folder called example. Open your command prompt and navigate to the example folder. Now type in the following command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx create-react-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Create a folder called component inside the src folder. Inside that component, create a file called Main.js.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd src
mkdir component
touch Main.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Again, in the same folder, open the command prompt and type in the following command to install React MUI library.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install @mui/material @emotion/react @emotion/styled
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Install the React &lt;a href="https://www.npmjs.com/package/react-helmet" rel="noopener noreferrer"&gt;'helmet'&lt;/a&gt; library.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install helmet
npm install react-helmet
npm install react-helmet-async
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 5:&lt;/strong&gt; Importing the &lt;strong&gt;'helmet'&lt;/strong&gt; library.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { Helmet } from "react-helmet";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Project Structure:&lt;/strong&gt; Once the installation is complete, you will have the modules required. Your folder structure should look something like this.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhyinckrb3cksu1ni7jf5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhyinckrb3cksu1ni7jf5.png" alt="Project Structure" width="428" height="755"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Example 1:&lt;/strong&gt; Setting up a CSP with React MUI using the &lt;strong&gt;'helmet'&lt;/strong&gt; library. It is used as the &lt;strong&gt;document head manager&lt;/strong&gt; for React-based applications.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;App.js&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from "react";
import Main from "./component/Main";
import { Helmet } from "react-helmet";

const csp = `
  default-src 'self';
  script-src 'self' 'unsafe-inline';
  style-src 'self' 'unsafe-inline';
  img-src 'self' data:;
  font-src 'self' data:;
`;

console.log({ csp });

const App = () =&amp;gt; {
    return (
        &amp;lt;&amp;gt;
            &amp;lt;Helmet&amp;gt;
                &amp;lt;meta http-equiv="Content-Security-Policy" content={csp} /&amp;gt;
            &amp;lt;/Helmet&amp;gt;

            &amp;lt;Main /&amp;gt;
        &amp;lt;/&amp;gt;
    );
};

export default App;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Main.js&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from "react";

function Main() {
    return (
        &amp;lt;&amp;gt;
            &amp;lt;div&amp;gt;
                GeeksforGeeks
                &amp;lt;br /&amp;gt;
                Content Security Policy in MUI
            &amp;lt;/div&amp;gt;
        &amp;lt;/&amp;gt;
    );
}

export default Main;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Step to run the application:&lt;/strong&gt; Open your command prompt in the same folder, and type in the following command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F63dyfvj04a11o386t9b3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F63dyfvj04a11o386t9b3.png" alt="Output on the Screen" width="381" height="195"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx8xiyiqo8gxmum3ccpmc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx8xiyiqo8gxmum3ccpmc.png" alt="Output on the Console" width="731" height="61"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Example 2:&lt;/strong&gt;  Setting up CSP using the 'react-helmet-async' library.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;App.js&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';
import Main from './component/Main';
import { HelmetProvider } from 'react-helmet-async';
import { CssBaseline } from '@material-ui/core';

function App(){
  return(
    &amp;lt;&amp;gt;
      &amp;lt;HelmetProvider&amp;gt;

        &amp;lt;CssBaseline /&amp;gt;
        &amp;lt;Main/&amp;gt;

      &amp;lt;/HelmetProvider&amp;gt;
    &amp;lt;/&amp;gt;
  );
};

export default App;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Main.js&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React from 'react';
import { Helmet } from 'react-helmet-async';
import { Button } from '@material-ui/core';

function Main() {
  return (
    &amp;lt;&amp;gt;
      &amp;lt;Helmet&amp;gt;
        &amp;lt;meta
          http-equiv="Content-Security-Policy"
          content="
            default-src 'self';
            script-src 'self' 'unsafe-inline' 'unsafe-eval';
            style-src 'self' 'unsafe-inline';
            font-src 'self' data:;
            img-src 'self' data:;
          "
        /&amp;gt;
      &amp;lt;/Helmet&amp;gt;
      &amp;lt;Button variant="contained" color="primary"&amp;gt;
        Hello, World!
      &amp;lt;/Button&amp;gt;
    &amp;lt;/&amp;gt;
  );
}

export default Main;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fofwdgtkqiyacfni5gsnq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fofwdgtkqiyacfni5gsnq.png" alt="React MUI CSP" width="508" height="252"&gt;&lt;/a&gt;&lt;br&gt;
This sets the &lt;strong&gt;'Content-Security-Policy'&lt;/strong&gt; header to allow resources to be loaded only from the same origin &lt;strong&gt;('self')&lt;/strong&gt;, and also allows inline scripts and styles.&lt;/p&gt;

&lt;p&gt;Connect me on Twitter:- &lt;a href="https://twitter.com/navyaarora_" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; 🤝🏻&lt;/p&gt;

&lt;p&gt;Do check out my GitHub for amazing projects:- &lt;a href="https://github.com/navyaarora01" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; 🤝🏻&lt;/p&gt;

&lt;p&gt;Connect me on LinkedIn:- &lt;a href="https://www.linkedin.com/in/navyaarora01/" rel="noopener noreferrer"&gt;Linkedin&lt;/a&gt; 🤝🏻&lt;/p&gt;

</description>
      <category>react</category>
      <category>reactmui</category>
      <category>csp</category>
      <category>npm</category>
    </item>
  </channel>
</rss>
