如何解决Netlify、Lambdas、Stripe 和 Googlebots
我一直在开发一个带有 React 的 SPA,我已经在 Netlify 上部署了它。该应用程序使用 stripe.js 作为一种付款方式。虽然 Stripe 的所有功能在用户端似乎都运行良好,但我们在使用 Google Search Console 时遇到了问题。似乎 Googlebot 抓取工具被 Stripe robots.txt 文件阻止了。基本上,最终目标是获得 google adsense 的批准,在多次拒绝(即使有预渲染和添加更多内容)之后,我们仍然被拒绝。当我们尝试使用 google 搜索控制台查看 google bot 爬虫看到的内容时,我们绝对没有错误,该站点对移动设备友好,但我们收到了如下所示的错误。虽然我显然无法控制他们对 Stripes robots.txt 文件的使用,但搜索控制台也告诉我这一点:
留言: 从源“https://m.stripe.network”访问“https://m.stripe.com/6”的 XMLHttpRequest 已被 CORS 策略阻止:不存在“Access-Control-Allow-Origin”标头在请求的资源上。
我想提到的最后一件事是所有的条带功能都是通过 netlify 从无服务器 Lambda 函数访问和调用的...我很困惑为什么 CORS 问题是机器人的政策,而不是网站用户的政策?我正在附加我刚刚启用 cors 策略的 stripe lambda 函数调用……但是再一次……为什么我必须这样做?如果我没有从用户端收到控制台中的错误,那么机器人为什么无法访问它?我已经尝试了从更改 netlify.toml 文件到添加不允许提供的 Stripe URL 的 robots.txt 文件的所有方法。任何线索?让我知道!已经感谢您的帮助! :)
//client sides
import {loadStripe} from "@stripe/stripe-js"
export async function handleFormSubmission(event) {
event.preventDefault();
const form = new FormData(event.target);
const data = {
sku: form.get('sku'),quantity: Number(form.get('quantity')),};
const response = await fetch('/.netlify/functions/create-checkout',{
method: 'POST',headers: {
'Content-Type': 'application/json',"Access-Control-Allow-Origin": "*","Access-Control-Allow-Headers": "Content-Type","Access-Control-Allow-Methods": "GET,POST",},body: JSON.stringify(data),}).then((res) => res.json())
const stripe=await loadStripe(response.publishableKey);
const {err}=await stripe.redirecttocheckout({
sessionId:response.sessionId
})
if(err){
console.log(err)
}
}
老实说,我要承认我有一段时间没有使用过条纹并且直到现在还没有遇到问题,因此我正在重新审视代码。这是我认为发出请求并创建条带结帐的另一个函数...
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY);
const inventory = require('./data/products.json');
exports.handler = async (event) => {
const { sku,quantity } = JSON.parse(event.body);
const product = inventory.find((p) => p.sku === sku);
const validatedQuantity = quantity > 0 && quantity < 2 ? quantity : 1;
const session = await stripe.checkout.sessions.create({
payment_method_types: ['card'],billing_address_collection: 'required',success_url: `${process.env.URL}/success`,cancel_url: process.env.URL,line_items: [
{
name: 'Cognitive Analysis',currency:'USD',amount: 299,quantity: 1
},],});
return {
statusCode: 200,body: JSON.stringify({
sessionId: session.id,publishableKey: process.env.STRIPE_PUBLISHABLE_KEY,}),headers: {
"Access-Control-Allow-Origin": "*",}
};
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。