Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.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
无法将Cookie从vb.net页面发送到php后端_Php_Vb.net_Cookies_Httpwebrequest_Cookiecontainer - Fatal编程技术网

无法将Cookie从vb.net页面发送到php后端

无法将Cookie从vb.net页面发送到php后端,php,vb.net,cookies,httpwebrequest,cookiecontainer,Php,Vb.net,Cookies,Httpwebrequest,Cookiecontainer,我正在尝试为跨域AJAX POST查询创建一个代理,为了做到这一点,我需要将客户端浏览器请求中的cookie添加到发送到PHP后端的POST请求中,该后端使用HttpWebRequest。为此,我将每个Request.Cookie添加到HttpWebRequest.CookieContainer对象中。出于某种原因,我添加到其中的cookie都不会进入我的PHP后端 我从一些搜索中了解到CookieContainer对象依赖于URI,我甚至不知道如何解释它!,也许这就是我的问题所在。但是,我尝试

我正在尝试为跨域AJAX POST查询创建一个代理,为了做到这一点,我需要将客户端浏览器请求中的cookie添加到发送到PHP后端的POST请求中,该后端使用HttpWebRequest。为此,我将每个Request.Cookie添加到HttpWebRequest.CookieContainer对象中。出于某种原因,我添加到其中的cookie都不会进入我的PHP后端

我从一些搜索中了解到CookieContainer对象依赖于URI,我甚至不知道如何解释它!,也许这就是我的问题所在。但是,我尝试将cookie上的域设置为不同的内容,但似乎没有影响它。因此,URI的含义可能与Cookie的域参数不同。如果是这样的话,我就卡住了

我完全支持另一种解决方案,如果它存在的话。如果有一种方法可以在asp.net中实现自动跨域代理,而不需要插件,那将拯救我的生命

这是我正在使用的代码

<%@ Page Language="VB" validateRequest="false" Debug="true" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Net" %>
<script runat="server">

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not Page.IsPostBack Then
            Dim displayValues As New StringBuilder()
            Dim CookieJar as New CookieContainer
            Dim objCookieColl as HttpCookieCollection
            Dim objThisCookie As HttpCookie
            Dim myCookie As HttpCookie
            Dim arr1() As String
            Dim myCount as Integer

            objCookieColl = Request.Cookies
            arr1 = objCookieColl.AllKeys
            Dim postedValues As NameValueCollection = Request.Form
            Dim nextKey As String
            For i As Integer = 0 To postedValues.AllKeys.Length - 1
                nextKey = postedValues.AllKeys(i)
                If nextKey.Substring(0, 2) <> "__" Then
                    displayValues.Append("&" & nextKey)
                    displayValues.Append("=")
                    displayValues.Append(Server.UrlEncode(postedValues(i)))
                End If
            Next

            Dim uri As New Uri("http://www.otherdomain.com/subfolder/backend.php")
            Dim data As String = displayValues.ToString
            If (uri.Scheme = uri.UriSchemeHttp) Then
                Dim postRequest As HttpWebRequest = HttpWebRequest.Create(uri)
            For index As Integer = 1 to UBound(arr1)
                objThisCookie = objCookieColl(arr1(index))
                Dim tempCookie As New Cookie(objThisCookie.Name, objThisCookie.Value, objThisCookie.Path, Request.ServerVariables("HTTP_HOST"))
                myCount = myCount + 1
                CookieJar.Add(tempCookie)
            Next
                postRequest.CookieContainer = CookieJar
                postRequest.Method = Request.HttpMethod
                postRequest.ContentLength = data.Length
                postRequest.ContentType = "application/x-www-form-urlencoded"
                Dim writer As New StreamWriter(postRequest.GetRequestStream())
                writer.Write(data)
                writer.Close()

                Dim myResponse As HttpWebResponse = postRequest.GetResponse()
                Dim x As Integer
                While x < myResponse.Headers.Count
                    Response.AppendHeader(myResponse.Headers.Keys(x), myResponse.Headers(x))
                    x = x + 1
                End While
                Dim reader As New StreamReader(myResponse.GetResponseStream())
                Dim responseString As String = reader.ReadToEnd()
                myResponse.Close()
                Response.Write(responseString)

            End If
        End If
    End Sub

</script>

我不熟悉ASP如何设置、存储和处理cookie。但是在您的PHP后端上,请尝试

<?php
echo "<pre>";
print_r($_COOKIE);
echo "</pre>";
?>
通过这种方式,您可以查看PHP是否找到了任何远程看起来与您试图读取的cookie相似的cookie。我不得不说,像这样的语言混合并不是我的建议,尽管我确信在这种需求背后有合理的逻辑。我可以提出一个可能的替代方案吗。也许可以用一些JavaScript来弥补这个差距。将变量设置为希望存储在cookie中,然后使用JavaScript设置cookie。 关于如何通过JavaScript设置cookie的参考,我知道使用PHP我可以重新设置使用JavaScript设置的cookie,所以希望这对一些人有所帮助,我所知道的ASP,你也应该能够在那里使用JavaScript


承认吧,这不是一个完美无缺的解决方案,也可能不是最好的。我不会在很多事情上使用这个概念,你可能会尝试连接正面和背面,但我看不出两者之间有多大的危害。

你的意思是,你有一个网站在你的情况下使用.Net asp运行,然后你想将cookie传递给另一个运行PHP的应用程序?我认为cookies被阻止与其他站点共享,因为这是不应该做的。它经常被用作黑客的攻击向量,因此我会认为你的服务器正在试图阻止它。< /P>没有PHP Cookie曾经到达PHP端,正如在这个问题中所陈述的。我不能真的使用javascript,因为我希望它是一个透明的代理——比如,我希望代理将所有内容链接到后端,而不做任何更改。我认为这与跨域cookie处理无关。老实说,在这一点上,使用ASP VB.Net与其说是一种需要,不如说是一种练习——谢天谢地,PHP很快就安装到了该服务器上!我能够在PHP中完美地完成这项工作。实际上,我用它做了一个谷歌代码项目: