【问题标题】:Cloudflare Workers main URL Redirect not working, Params as wellCloudflare Workers 主 URL 重定向不起作用,参数也不起作用
【发布时间】:2020-07-06 00:55:42
【问题描述】:

这里是外星人。 我正在尝试使用 Cloudflare Workers 将子域重定向到不同的域,但它不起作用: wa.example.com 到 wa.me/60123456789

及其路径,效果很好: wa.example.com/WantToBuy 到 wa.me/60123456789?text=Want%20To%20Buy

另外,我无法在同一脚本中从子域中删除参数 (fbclid)

这个工人的路线是 wa.example.com/*

如何让它发挥作用?提前谢谢你。

这是我的完整脚本:

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

async function fetchAndApply(request) {

let url = new URL(request.url);
let path = url.pathname;

var yourNumber = "60123456789"
const yourMessage = "'"+path+"'"

  number = yourNumber
  message = yourMessage.match(/(\d+|[a-z]+|([A-Z]([A-Z]+|[a-z]*)))/g).join('%20')

let whatsapp = 'wa.me/' + number + '?text=' + message

return fetch(whatsapp,request);
}

addEventListener('fetch', event => {
  let url = new URL(event.request.url)

  if (url.searchParams.has('fbclid'))
   url.searchParams.delete('fbclid')

  event.respondWith(
    fetch(url, event.request)
  )
})

【问题讨论】:

    标签: javascript redirect service-worker cloudflare cloudflare-workers


    【解决方案1】:

    这里有几个问题...

    number = yourNumber
    message = yourMessage.match(/(\d+|[a-z]+|([A-Z]([A-Z]+|[a-z]*)))/g).join('%20')
    

    您应该将varlet 放在numbermessage 的这些声明之前。否则,您会将这些存储到全局变量中,这可能会影响其他请求,这几乎肯定不是您想要的。

    message = yourMessage.match(/(\d+|[a-z]+|([A-Z]([A-Z]+|[a-z]*)))/g).join('%20')
    

    match() 没有找到任何匹配项时,它返回null。然后,当您在其上调用 .join() 时,这将引发异常。实际上,在预览中运行脚本会在控制台中生成以下错误消息:Uncaught (in response) TypeError: Cannot read property 'join' of null

    这就是为什么您的脚本在没有发送路径时不起作用的原因——在这种情况下,没有匹配的正则表达式。

    let whatsapp = 'wa.me/' + number + '?text=' + message
    

    您可能希望在此 URL 的开头添加 https://,否则无效。

    addEventListener('fetch', event => {
    

    您的脚本不止一次使用addEventListener('fetch'),两个侦听器都会产生一个结果。调用respondWith() 的第一个侦听器将“获胜”,因此第二个侦听器被忽略,因此您发现它不起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-25
      • 2014-08-30
      • 1970-01-01
      • 2014-01-19
      • 2012-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多