Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php “错误”;不允许使用HTTP代码405方法";对GET请求使用CURL时_Php_Ajax_Curl - Fatal编程技术网

Php “错误”;不允许使用HTTP代码405方法";对GET请求使用CURL时

Php “错误”;不允许使用HTTP代码405方法";对GET请求使用CURL时,php,ajax,curl,Php,Ajax,Curl,我想通过CURL获取GET请求的响应,但得到错误“HTTP/1.1 405 Method Not Allowed”,并且没有返回任何内容(头除外)。 下面是我的代码 $url = "http://api.example.com/Q5PLCmwYzho=/7avEU7ptYyummfheg9!0KA==?aqPI=93566&aqIIO=false&aqIP=false&aqSK=0&aqTK=14&aqSO=date&aqCI=0" $option

我想通过CURL获取GET请求的响应,但得到错误“HTTP/1.1 405 Method Not Allowed”,并且没有返回任何内容(头除外)。 下面是我的代码

$url = "http://api.example.com/Q5PLCmwYzho=/7avEU7ptYyummfheg9!0KA==?aqPI=93566&aqIIO=false&aqIP=false&aqSK=0&aqTK=14&aqSO=date&aqCI=0"
$options = array(
    CURLOPT_URL => $url,
    CURLOPT_HTTPGET => true,        //set request type post or get
    CURLOPT_RETURNTRANSFER => true,     // return web page
    CURLOPT_HEADER => true,
    CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36',
    CURLOPT_HTTPHEADER => array(
     'Accept: application/json, text/javascript, */*; q=0.01',
     'Accept-Encoding: gzip, deflate, sdch',
     //'Content-Type: application/json; charset=utf-8',
     //'Access-Control-Allow-Origin: http://localhost:14189',
     //'Origin: http://www.example.com',
     //'Host: api.example.com',
     //'Access-Control-Allow-Credentials: true',
    ),
    CURLOPT_COOKIE => 'Cookie:scarab.profile=%2293566%7C1465411024%22; scarab.mayAdd=%5B%7B%22i%22%3A%2293566%22%7D%2C%7B%22i%22%3A%22117313%22%7D%5D; _ceg.s=o8gwtw; _ceg.u=o8gwtw; _gat=1; _dc_gtm_UA-13212406-1=1; DK-Client=CWUU,09b6ab76-f662-48b3-a1e6-f08779519236; __auc=764bbe2e155314db7ac1a950571; scarab.visitor=%22566B1DCD74FCD3A5%22; _ga=GA1.2.412464545.1465411024'
);

$ch      = curl_init();
curl_setopt_array( $ch, $options );
$content = curl_exec( $ch );
$err     = curl_errno( $ch );
$errmsg  = curl_error( $ch );
$header  = curl_getinfo( $ch );
curl_close( $ch );
$header['errno']   = $err; //no error!
$header['errmsg']  = $errmsg; 
$header['content'] = json_decode($content); // no content!
echo $response['http_code']; //output: 405
我在网页中检查了相应的ajax请求,每个curl选项似乎都设置正确。详细信息(从chrome开发工具中捕获)如图所示。 ![1] :

我错过了什么??我搜索了很多,但都没能解决问题!我知道这个错误的原因之一是对curl使用了未经授权的请求方法,但是相应的AJAX调用使用GET方法并获得结果

怎么了?任何帮助都将不胜感激

更新:我编写了一个AJAX请求来获取本地服务器(localhost)中的数据,但出现了以下错误:“跨源请求被阻止”。这意味着我不能从localhost向其他域(api.example.com)发出请求。从该服务器获取响应内容是否有任何变通方法或黑客攻击

  • 尝试在您的请求中发送用户代理
  • 如果您请求的页面需要任何授权,那么您需要发送带有身份验证数据的cookie
  • 尝试在您的请求中发送用户代理
  • 如果您请求的页面需要任何授权,那么您需要发送带有身份验证数据的cookie


  • 我在《邮递员》中看到了这个错误。在我的例子中,这是因为我在使用GET,而我本应该使用POST。我还使用了GET参数而不是POST参数。检查正确的方法(在我的java代码中指定)并使用postman中的“code”按钮来显示curl CLI对我很有帮助。

    我在postman中遇到了这个错误。在我的例子中,这是因为我在使用GET,而我本应该使用POST。我还使用了GET参数而不是POST参数。检查正确的方法(在我的java代码中指定)并使用postman中的“code”按钮来显示curl CLI对我很有帮助。

    'Content-Type:application/json;字符集=utf-8',
    -为什么会有这样的字符集?您正在发出GET请求。没有用于描述的内容类型的请求正文。
    'Access-Control-Allow-Origin:http://localhost:14189“,
    -你为什么有这个<代码>访问控制允许源站不是请求头。它只是一个响应头。
    'Access-Control-Allow-Credentials:true'
    -Ditto@Quentin您好,这些选项是在ajax调用中设置的(您可以在图像[link]()的请求头部分中看到它们)。我第一次尝试了没有这些选项的curl,但仍然得到了相同的错误。JavaScript当时也是错误的。
    'Content-Type:application/json;charset=utf-8',
    -为什么会这样?您正在发出get请求。没有请求正文来描述的内容类型。
    'Access-Control-Allow-Origin:http://localhost:14189’,
    -为什么会这样?
    访问控制允许源文件
    不是请求头文件。它只是响应头文件。
    'Access-Control-Allow-Credentials:true'
    -Ditto@Quentin您好,这些选项是在ajax调用中设置的(您可以在图像[link]()的请求头部分中看到它们)。我第一次尝试了没有这些选项的curl,但仍然得到了相同的错误。JavaScript当时也是错误的。这应该是对OP的注释,而不是答案,除非您对此进行扩展。@marv255 Hi,tnx供您参考。我包括了CURLOPT_USERAGENT和CURLOPT_COOKIE选项,但问题仍然存在。:(您是否有可能在您使用curl请求的站点上看到web服务器的日志?这应该是对OP的评论,而不是回答,除非您对此进行详细说明。@marv255 Hi,tnx供您参考。我包括了CURLOPT_USERAGENT和CURLOPT_COOKIE选项,但问题仍然存在。:(您是否有可能在使用curl请求的站点上查看web服务器的日志?