찾다
백엔드 개발PHP 튜토리얼 php post请求和jquery中post请求有什么不同吗?该如何处理

php post请求和jquery中post请求有什么不同吗?
自己写了一个php的socket http请求,

PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
public function sendpost($postType='POST')
    {
        $url = $this->postURL;
        $data = $this->postData == '' ? array() : $this->postData;
        //先解析url
        $url = parse_url($url);
        $url_port = !isset($url['port']) ? (($url['scheme'] == 'http') ? 80 : 443) : $url['port'];
        if (!$url)
        {
            $this->errMessage = "couldn't parse url";
            return false;
        }
        //将参数拼成URL key1=value1&key2=value2 的形式
        $encoded = "";
        while (list($k, $v) = each($data))
        {
            $encoded .= ($encoded ? '&' : '');
            $encoded .= rawurlencode($k)."=".rawurlencode($v);
        }
        //echo $encoded;exit;
        $len = strlen($encoded);
        //拼上http头
        $out = "{$postType} ".$url['path'].(isset($url['query']) ? ('?'.$url['query']) : '')." HTTP/1.1\r\n";
        $out .= "Host:".$url['host']."\r\n";
        $out .= "Content-type: application/x-www-form-urlencoded\r\n";
        $out .= "Connection: Close\r\n";
        $out .= "Content-Length: $len\r\n";
        $out .= "\r\n";
        $out .= $encoded."\r\n";
        //打开一个sock
        $fp = @fsockopen($url['host'], $url_port);
        $line = "";
        if (!$fp)
        {
            $this->errMessage = "$errstr($errno)\n";
            return false;
        }
        else
        {
            fwrite($fp,$out);
            while (!feof($fp))
            {
                $line .= fgets($fp, 2048);
            }
        }
        //去掉头文件
        if ($line)
        {
            $body = stristr($line, "\r\n\r\n");
            $body =substr($body, 4, strlen($body));
            $line = $body;
        }
        fclose($fp);
        return $line;
    }



同时,用jquery的ajax请求测试。

JScript code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
$.ajax({
                    type : "POST",
                    cache : false,
                    url : _url,
                    data : _data,
                    dataType : 'json',
                    success : function(data) {
                        
                    }
                });



发现php的请求总是返回错误的信息,而ajax请求则返回正确的,应该都是http post请求数据返回数据,没什么区别吧。
服务器端还可以检测出是ajax请求还是php请求?

------解决方案--------------------
PHP code
[User:root Time:03:17:09 Path:/home/apache/web]$ cat test.php 
<?php // http only, no error check.
function post_request($url, $data) {
        $post_data = http_build_query($data);
        $request = "POST /main.php HTTP/1.1\r\n" . 
                           "Host: 192.168.1.10\r\n" .
                           "Content-Type: application/x-www-form-urlencoded\r\n" .
                           "Content-Length: " . strlen($post_data) . "\r\n\r\n" .
                           $post_data;
        echo $request . PHP_EOL;
        $sockfd = fsockopen("192.168.1.10", 80);
        fwrite($sockfd, $request);
        $response = "";
        while (($ret= fgets($sockfd)) !== false) {
                $response .= $ret;
        }
        return $response;
}

$response = post_request("http://192.168.1.10/main.php", array('a' => "baidu", 'b' => "client backend"));
echo $response;
?>
[User:root Time:03:17:12 Path:/home/apache/web]$ cat main.php 
<?php echo $_POST['a'] . PHP_EOL;
echo $_POST['b'] . PHP_EOL;
?>
<br><font color="#e78608">------解决方案--------------------</font><br>另外,https你的代码是无力的,必须用php支持的context参数利用stream_context_create配合file_get_contents之类的使用或者fopen之类的使用,或者直接用curl。
 <div class="clear">
                 
              
              
        
            </div>
성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
PHP函数介绍—get_headers(): 获取URL的响应头信息PHP函数介绍—get_headers(): 获取URL的响应头信息Jul 25, 2023 am 09:05 AM

PHP函数介绍—get_headers():获取URL的响应头信息概述:在PHP开发中,我们经常需要获取网页或远程资源的响应头信息。PHP函数get_headers()能够方便地获取目标URL的响应头信息,并以数组形式返回。本文将介绍get_headers()函数的用法,以及提供一些相关的代码示例。get_headers()函数的用法:get_header

怎样透过几个步骤获取您的 Steam ID?怎样透过几个步骤获取您的 Steam ID?May 08, 2023 pm 11:43 PM

现在很多热爱游戏的windows用户都进入了Steam客户端,可以搜索、下载和玩任何好游戏。但是,许多用户的个人资料可能具有完全相同的名称,这使得查找个人资料或什至将Steam个人资料链接到其他第三方帐户或加入Steam论坛以共享内容变得困难。为配置文件分配了一个唯一的17位id,它保持不变,用户无法随时更改,而用户名或自定义URL可以更改。无论如何,一些用户并不知道他们的Steamid,这对于了解这一点非常重要。如果您也不知道如何找到您帐户的Steamid,请不要惊慌。在这篇文

如何在Java中使用URL编码和解码如何在Java中使用URL编码和解码May 08, 2023 pm 05:46 PM

使用url进行编码和解码编码和解码的类java.net.URLDecoder.decode(url,解码格式)解码器.解码方法。转化成普通字符串,URLEncoder.decode(url,编码格式)将普通字符串变成指定格式的字符串packagecom.zixue.springbootmybatis.test;importjava.io.UnsupportedEncodingException;importjava.net.URLDecoder;importjava.net.URLEncoder

Scrapy优化技巧:如何减少重复URL的爬取,提高效率Scrapy优化技巧:如何减少重复URL的爬取,提高效率Jun 22, 2023 pm 01:57 PM

Scrapy是一个功能强大的Python爬虫框架,可以用于从互联网上获取大量的数据。但是,在进行Scrapy开发时,经常会遇到重复URL的爬取问题,这会浪费大量的时间和资源,影响效率。本文将介绍一些Scrapy优化技巧,以减少重复URL的爬取,提高Scrapy爬虫的效率。一、使用start_urls和allowed_domains属性在Scrapy爬虫中,可

SpringBoot多controller如何添加URL前缀SpringBoot多controller如何添加URL前缀May 12, 2023 pm 06:37 PM

前言在某些情况下,服务的controller中前缀是一致的,例如所有URL的前缀都为/context-path/api/v1,需要为某些URL添加统一的前缀。能想到的处理办法为修改服务的context-path,在context-path中添加api/v1,这样修改全局的前缀能够解决上面的问题,但存在弊端,如果URL存在多个前缀,例如有些URL需要前缀为api/v2,就无法区分了,如果服务中的一些静态资源不想添加api/v1,也无法区分。下面通过自定义注解的方式实现某些URL前缀的统一添加。一、

nginx怎么配置url重定向nginx怎么配置url重定向May 12, 2023 am 10:31 AM

本文系统:centos6.5_x64三台主机:nginx主机,hostname:master.lansgg.comip:192.168.10.128apache主机,hostname:client1.lansgg.comip:192.168.10.129一、nginx地址重定向二、nginx反向代理1、地址重定向:是指当使用者浏览某个网址时,将他导向到另一个网址的技术。常用在把一串很长的网址,转成较短的网址。因为当要传播某网站时,常常因为网址太长,不好记忆;又有可能因为换了网路的免费网页空间,网

nginx rewrite如何实现URL跳转nginx rewrite如何实现URL跳转Jun 03, 2023 am 11:55 AM

url跳转这里说的url跳转就是用户在访问一个url时将其跳转到另一个url上。常见的应用场景是让多个域名跳转到同一个url上,(例如让旧域名跳转到新域名上)将静态文件请求跳转到cdn上等根据用户设备跳转到不同站点(pc版,wap版)等。url跳转可以通过js在页面上设置的window.location实现也可以通过php设置header来实现当然也可以用nginx的rewrite功能实现nginxrewrite模块rewrite是nginx的静态重写模块基本用法是rewritepattenre

url是啥意思url是啥意思Aug 04, 2023 am 11:43 AM

url是“Uniform Resource Locator”的缩写,中文意为“统一资源定位符”。URL是通过互联网来定位和访问特定资源的地址,常见于网页浏览和HTTP请求中。URL的主要作用是定位和访问互联网上的资源,这些资源可以是网页、图片、视频、文档或其他文件。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전