无法将Cookie从vb.net页面发送到php后端
我正在尝试为跨域AJAX POST查询创建一个代理,为了做到这一点,我需要将客户端浏览器请求中的cookie添加到发送到PHP后端的POST请求中,该后端使用HttpWebRequest。为此,我将每个Request.Cookie添加到HttpWebRequest.CookieContainer对象中。出于某种原因,我添加到其中的cookie都不会进入我的PHP后端 我从一些搜索中了解到CookieContainer对象依赖于URI,我甚至不知道如何解释它!,也许这就是我的问题所在。但是,我尝试将cookie上的域设置为不同的内容,但似乎没有影响它。因此,URI的含义可能与Cookie的域参数不同。如果是这样的话,我就卡住了 我完全支持另一种解决方案,如果它存在的话。如果有一种方法可以在asp.net中实现自动跨域代理,而不需要插件,那将拯救我的生命 这是我正在使用的代码无法将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,我甚至不知道如何解释它!,也许这就是我的问题所在。但是,我尝试
<%@ 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中完美地完成这项工作。实际上,我用它做了一个谷歌代码项目: