【发布时间】:2019-02-10 00:33:05
【问题描述】:
我正在尝试集成 paypal 支付,但我遇到了一个问题,因为我使用 ajax 将购物车数据发送到创建订单。它向我显示此警报:无法加载https://linktothepaypallogin 对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问 Origin 'http://localhost'。
创建订单php:
<?php
session_start();
if(isset($_SESSION['pay']) && $_SESSION['pay']=="Paypal"){
unset($_SESSION['pay']);
header("location:PayPal-PHP-SDK/paypal/rest-api-sdk-php/sample/payments/AuthorizePaymentUsingPayPal.php");
exit();
}
?>
JS:
function validate_order(){
$.ajax({
url: "create_order.php",
});
}
我确定问题出在 ajax,因为如果我尝试提交,它会按预期工作。
【问题讨论】:
-
看起来您正试图在浏览器上的 XMLHttpRequest 中访问“linktothepaypallogin”,并且由于请求的类型,浏览器执行 CORS 预检,但失败了......您显示的代码会导致该错误
-
是的,我不知道如何让浏览器正确地将我重定向到 paypal 链接,而不是向我显示该错误。
-
不要将 XHR 用于其他域不允许的跨源请求 - 问题中的代码 与您的错误无关 - 所以,这很难真正帮助完全
-
好吧,我认为这是 ajax 的问题,因为如果我使用输入提交到同一个 create.php,它就可以正常工作。
-
您在问题中显示的 Ajax 是同源的,因此不会导致跨源错误。等一下。我现在明白了。您正在将请求重定向到不同的主机。很抱歉造成混乱。
标签: javascript php ajax