当前位置: 首页 > 知识库问答 >
问题:

cloudflare js worker允许国家列表并阻止其余国家

武向文
2023-03-14
addEventListener('fetch', event => {
  event.respondWith(blockCountries(event.request))
})

//Add countries to this Set to block them
const countries = new Set([  
  "US", // United States
  "SG", // Singapore 
  "BR"  // Brazil
])

async function blockCountries(request) {
  // Get country value from request headers
  let country = request.headers.get('cf-ipcountry')

  // Find out if country is on the block list
  let countryBlocked = countries.has(country)

  // If it's on the blocked list, give back a 403
  if (countryBlocked){
    return new Response("This page not available in your country",
        { status: 403, statusText: "Forbidden" })
  }

  // Catch-all return of the original response
  return await fetch(request)
}

有什么调整的技巧吗

共有1个答案

宗政金鹏
2023-03-14

为了进行此更改,您可以更改以下内容:

let countryBlocked = countries.has(country)

对此:(注意感叹号)

let countryBlocked = !countries.has(country)

感叹号是not运算符。因此,如果此请求的国家不在允许的国家集中,则此更改将把countryblocked设置为true

addEventListener('fetch', event => {
  event.respondWith(blockCountries(event.request))
})

// Add countries to this Set to allow them
const countries = new Set([  
  "US", // United States
  "SG", // Singapore 
  "BR"  // Brazil
])

async function blockCountries(request) {
  // Get country value from request headers
  let country = request.headers.get('cf-ipcountry')

  // Check if country is on the allowed list
  let countryBlocked = !countries.has(country)

  // If it's not on the allowed list, give back a 403
  if (countryBlocked){
    return new Response("This page not available in your country",
        { status: 403, statusText: "Forbidden" })
  }

  // Catch-all return of the original response
  return await fetch(request)
}
 类似资料:
  • 每个国家都有一个特定的 ISO 3166代码 。 根据输入数据和用户的交互行为,在Gio地球表面的国家可以有以下几种状态: 1. 被选中的国家 当用户点击Gio地球表面某个国家的区域时,这个国家会以“被选中”的状态点亮。此时这个国家被称为"被选中的国家"。 可以通过 configure() API来设置被选中国家的颜色,具体设置方法如下所示: controller.configure({     

  • 问题内容: 我已经找到了针对Objective-C的答案,但是林先生很难迅速做到这一点。 我用它来获取当前位置的国家代码: 但是,如何将该国家/地区代码转换为国家/地区名称,例如在此示例中,将“ US”转换为“ United States”? 问题答案: 迅捷3

  • 在浏览了一下网站之后,我已经相当接近了下面所示的代码。div显示正常,但是如果我在美国div或加拿大div中放入一个选择框,它会破坏它。 因此,对于这个显示建议,我只是在这个示例中留下文本,以便有一个工作示例。任何帮助找出为什么它与一个选择框内的美国和加拿大div将非常感谢。

  • Quickie对象状态简介 了解实例在会话中的状态是很有帮助的: 瞬变 -不在会话中且未保存到数据库中的实例;即没有数据库标识。这类对象与ORM的唯一关系是它的类有一个 Mapper 与之相关的。 悬而未决的 当你 Session.add() 一个暂时的实例,它将变为挂起。它实际上还没有被刷新到数据库中,但是下一次刷新发生时会被刷新。 持久的 -存在于会话中且在数据库中有记录的实例。通过刷新使挂起

  • 问题内容: 除此之外,因为我已经有了一些奇怪的错误。还有什么最好的方法来获取2个字母的国家/地区代码以及完整的国家/地区名称? 问题答案: 对于一个单独的项目,我从ISO站点获取了国家代码数据。 当心以下内容: 名称大写。您可能会想要对其进行调整,因此并非如此。 名称并非全都是简单的ASCII。 名称并不完全是政治中立的(任何声称的国家列表都可能是不可能的)。例如,“中国台湾省”是一个名称。这篇博

  • 本文向大家介绍PHP国家数组,包括了PHP国家数组的使用技巧和注意事项,需要的朋友参考一下 如果要获取国家/地区列表及其代码,请使用以下数组。这些代码是2个字母的ISO代码,3个字母的UN代码和3个数字的UN代码。前几天,我不得不构建该表单,以便以表格形式显示国家/地区列表,因此,如果需要再次使用该表单,请在此处发布。 显然,此列表可能会更改,但其中的大部分应保持不变。如果您发现任何更改,请告诉我