我在php中很新。当前,我面临有关php curl post和重定向的问题。我已经编写了很多代码来连接跨域api。在此API中,响应将重定向我的页面到另一个页面。
所以,现在我面临的是我也无法跟踪api响应。这意味着在我的php脚本中,我的curl已收到重定向页面的网页内容,但我的页面仍然保留。
我可以知道php curl可以遵循API重定向吗?
有谁知道如何解决这个问题?
下面是我的代码。
$url = "http://www.google.com.my"; //example this is an API
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ch, CURLOPT_REFERER, $url);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Content-Length: ' . strlen($data_string)));
$result = curl_exec($ch);
$response = curl_getinfo($ch);
curl_close($ch);
Run Code Online (Sandbox Code Playgroud)
在$ result中,我收到了API重定向页面。但这只是Web内容。
设置CURLOPT_FOLLOWLOCATION
为true
使cURL跟随重定向。
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
Run Code Online (Sandbox Code Playgroud)
资料来源:http : //php.net/manual/en/function.curl-setopt.php
这里有两个HTTP请求。
这两个请求是独立的。他们有自己的反应,他们之间没有任何联系不是你自己创造的。
如果响应 2 说“重定向”,那么不会自动使响应 1 也说“重定向”。
要做到这一点:
header()
),以便它出现在对 1 的响应中这假设对您的请求的响应直接显示在浏览器中。即您正在浏览器或类似浏览器中提交表单。
如果请求 1 是 Ajax 请求,则重定向它只会导致重定向的页面传递给 JavaScript。它不会在浏览器中加载新页面。如果你想告诉 JavaScript 加载一个新页面,那么:
location.href
新值 归档时间: |
|
查看次数: |
4727 次 |
最近记录: |