php - 通过nodejs或者php访问这个地址被阿里云屏蔽了,如何在nodejs或者php中访问这个链接的正确返回值?
问题描述
通过nodejs或者php访问这个地址被阿里云拦截了,但是在浏览器中直接访问这个地址可以返回json数据,请问如何在nodejs或者php中访问这个链接的正确返回值呢?
https://mall.xsyxsc.com/user/product/indexWindows
在浏览器上直接访问会返回如下数据:</p>
{"rspCode":"illegalArgumentError",","rspDesc":"indexWindowsareId: 区域不能不能为空, indexWindowsBrandHouse: 是否.openid为空, indexWindows.storeId: 是否为空","data" :无效的}
使用nodejs https或者php curl,会返回如下提示:</p>
您很抱歉,由于您有可能对网站造成,的潜在访问权限被访问。URL 的请求 ID 是:254642583e433
下面是我用php请求的例子:</p>
<?php
function getRequest($url){
$headerArray = [
'Host'=>'mall.xsyxsc.com',
'User-Agent'=>'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0',
'Accept'=>'*/*',
'Accept-Language'=>'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
'Accept-Encoding'=>'gzip, deflate',
'Cache-Control'=>'max-age=0'
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch,CURLOPT_HTTPHEADER,$headerArray);
$output = curl_exec($ch);
curl_close($ch);
//将返回的json对象解码成数组对象并返回
//$output = json_decode($output,true);
return $output;
}
$res = getRequest('https://mall.xsyxsc.com/user/product/indexWindows');
// $res = getRequest('https://www.baidu.com/');
exit($res);
解决方案
烧功
它看起来像防火墙规则。当您使用 curl 时,这是一个不同的请求。您的阿里云防火墙阻止了该访问,因此您收到 405 错误。
您可以在 curl 请求之后立即打开 Web 应用程序防火墙日志,这样您就可以发现问题并配置一些允许该请求类型或该源 IP 地址的防火墙规则。
在此处查找有关如何检查防火墙日志的更多信息:https ://www.alibabacloud.com/help/doc-detail/100503.htm?spm=a2c63.l28256.b99.90.20a82f0dHJsHV1
推荐阅读
- python-3.x - 大熊猫的百分比计算
- css - 在 React 站点上使用 CSS 规则插件时未找到 GSAP 目标未定义
- javascript - FormBuilder 编辑构建模板
- javascript - 关于 Yarn 未满足的对等依赖关系的警告
- android - 如何在 Firebase SMS 身份验证中发送带有发件人名称的 OTP
- dataframe - 使用 Spark-SQL 执行 groupBy 操作时考虑非 Null 值
- python-3.x - Python中多个条件下删除带括号的内容
- java - 如何将谷歌地图集成到安卓的汽车应用程序中?
- django - 使用 ngix 和 uwsgi 的问题
- c - ThreadSanitaizer 未检测到 lock_cmpxchg 并警告数据争用