我正在将 ajax 请求传递给另一个远程服务器以获取访问记录
Posted
技术标签:
【中文标题】我正在将 ajax 请求传递给另一个远程服务器以获取访问记录【英文标题】:I am passing ajax request to other remoter server for access record 【发布时间】:2019-11-28 01:43:00 【问题描述】:我正在尝试通过从我当前的远程页面向其他远程服务器控制器传递 ajax 请求来获取数据
这是我的第一个远程查看页面代码:
<?php include 'header.php'; ?>
<script src="/assets/js/plugins/jquery.min.js"></script>
<script src="/assets/js/jquery.validate.min.js"></script>
<script>
$.noConflict();
</script>
<div class="breadcrumb-row">
<div class="container">
<div class="row">
<div class="col-md-12 col-sm-12 m-b30">
<div class="section-head">
<div class="newsLetter-bx">
<form role="form" id="status_form" name="status_form" method="post" autocomplete="off" >
<div class="input-group">
<input name="lr_no" id="lr_no" class="form-control" placeholder="Enter L.R No" type="text">
<span class="input-group-btn">
<button type="submit" id="get" class="site-button m-l10">Submit</button>
</span>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$("#get").click(function()
console.log("hello");
status_form();
return false;
);
function status_form()
var lr_no = $('#lr_no').val();
$.ajax(
url :"http://demo.barque.online/sitecontroller/StatusController/fetchStatus",
type:"POST",
dataType: "json",
data:
lr_no:lr_no,
,
dataType: "html",
success: function(data)
console.log(data);
// $('#status_table').html(data);
// //$('#consignor_name').trigger("change");
// enquiryStatus();
,
error:function(data)
alert("error message"+data);
,async:false,
);
</script>
<?php include 'footer.php'; ?>
这是我的第二个移除控制器:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class StatusController extends CI_Controller
public function __construct()
parent::__construct();
if(!is_logged_in())
redirect("user/SigninController/");
else
$this->load->model("sitemodel/StatusModel",'sModel');
function fetchStatus()
$lr_no = $this->input->post('lr_no');
$statusResult = $this->sModel->fetchStatus($lr_no);
echo json_encode($statusResult);
这是我的模型:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class StatusModel extends CI_Model
function fetchStatus($lr_no)
$this->db->select('*');
$this->db->from('bilty');
$this->db->where('lr_no',$lr_no);
$query = $this->db->get();
return $query->result();
我收到这个错误
jquery.min.js:4 Access to XMLHttpRequest at 'http://demo.barque.online/sitecontroller/StatusController/fetchStatus' from origin 'http://barquetranslogistics.com' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
我不知道我的代码哪里错了。 我只是通过我的网站页面的 ajax 请求将 id(lr_no) 传递给其他项目控制器的函数
【问题讨论】:
为什么在 URL 中有两个控制器?? @DevsiOdedrasitecontroller
(是我的目录名称)和StatusController
是我的控制器名称
【参考方案1】:
例如,您将 JS 托管在 http://barquetranslogistics.com
(原点),而远程 PHP 服务器托管在 http://demo.barque.online
,您可以使用此 PHP 标头从 JS 跨域发布:
public function __construct()
header('Access-Control-Allow-Origin: http://barquetranslogistics.com');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 604800');
header("Access-Control-Allow-Headers: Origin, Content-Type, Accept, Access-Control-Request-Method");
header("Access-Control-Allow-Methods: GET, POST");
parent::__construct();
if(!is_logged_in())
redirect("user/SigninController/");
else
$this->load->model("sitemodel/StatusModel",'sModel');
【讨论】:
【参考方案2】:它说明了错误本身的一切。您正面临此错误,因为您没有在请求的域中设置 CORS 策略。不允许 Web 应用程序在其域之外发出请求,除非来自其他来源的响应包含正确的 CORS 标头。
您可以在此处阅读有关 CORS 政策的更多信息-
CORS Policy Docs
您可以使用CORS anywhere 或通过在其他来源设置 CORS 标头来解决此问题。希望对您有所帮助。
How to use CORS Anywhere
【讨论】:
以上是关于我正在将 ajax 请求传递给另一个远程服务器以获取访问记录的主要内容,如果未能解决你的问题,请参考以下文章
使用 Retrofit 发送 POST 请求并接收 Json 响应无法使用响应数据我需要将其传递给另一个活动
Ajax 将格式化文本传递给另一个 php 文件并显示为在文本区域中