Я пытаюсь создать прокси для междоменных запросов POST AJAX, и для этого мне нужно добавить файлы cookie из запроса моего клиента (браузера) в запрос POST, который я отправляюБэкэнд PHP, который использует 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>