JQuery :: How To Pass A Request Header To A Web Service
Mar 1, 2011īm trying to pass a header to a web service using jquery but i canīt. Iīm a NEWB at AJAX so please be gentle.
[Code]....
īm trying to pass a header to a web service using jquery but i canīt. Iīm a NEWB at AJAX so please be gentle.
[Code]....
While using Ajax in web applications we use XML to transfer the data between server and client. However XSS validation comes into picture, So questions are,1. Is passing XML like this is correct?2. Are we exposed to security issues if we turn off XSS validation?3. Can passing Ajax request with header (content-type = application/xml) solve this problem ?JSON is also good approach to transfer the data but that to invoke XSS.
View 1 RepliesI have a web service with the following contract:
POST /Service/service.asmx HTTP/1.1
Host: xxx.xxx.xxx
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "xxx.xxx.xxx/Service/Method"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<Request xmlns="xxx.xxx.xxx/Service/">
<transactiontype>string</transactiontype>
<username>string</username>
<password>string</password>
</Request>
</soap:Header>
<soap:Body>
<Method xmlns="xxx.xxx.xxx/Service/">
<xml>xml</xml>
</Method>
</soap:Body>
</soap:Envelope>
And I am trying to call the service using jquery. This is my code:
$.ajax({
url: serverUrl + 'Method',
type: "POST",
dataType: "xml",
data: { xml: "xml" },
beforeSend: function (req) {
req.setRequestHeader('Header', '<Request xmlns="xxx.xxx.xxx/Service/">'
+'<transactiontype>4</transactiontype>'
+'<agencyName>name</agencyName>'
+'<username>user</username>'
+'<password>pass</password>'
+'</Request>');
},
success: function (data) {
alert(data.text);
},
error: function (request, status, errorThrown) {
alert(status);
}
});
However, the header content is not passed to the web service? How would I go about passing the header credentials to my web service call?
As it is now I create a JavaScript object and then stringify it, put it in a hidden textbox and my code behind can read this string. I then use JSON.NET to parse the string which works fine. I now try to use ajax to post it to my web service but have some issues with how to send the string. I have tried many ways but gets the common errors like
Invalid JSON primitive: myString.
So I checked this out [URL] and it works with hard coded values but I want to use a variable.
JavaScsript to create the object:
for (var i = 0; i < results.rows.length; i++) {
var row = results.rows.item(i);
var customer = new Object();
customer.id = row['id']
customer.name = row['name']
var customerString = JSON.stringify(customer);
$.ajax({
type: "POST",
url: "synchronise.asmx/synchroniseCustomers",
data: "synchroniseCustomers: " + customerString,
contentType: "application/json; charset=utf-8",
dataType: "json",
error: function (xhr, status) {
alert("An error occurred: " + status);
},
success: function (msg) {
alert("success");
}
});
}
WebMethod:
public void synchroniseCustomers(string customerString)
{
JObject o = JObject.Parse(customerString);
string id = (string)o["id"];
string name = (string)o["name"];
If I use data: '{ FirstName: "Dave", LastName: "Ward" }'
in the example above it works but I wish to pass on a string instead.
Iīm using jQuery to make the ajax calls to web services. Iīm not using json, I want the information in XML. If I donīt pass parameters and I make the WS parameter less it works but if I want to pass a value as parameter (I tried int and string) it doesnīt work. Here is my code:
jQuery: [Code]....
The web service
[Code]....
The error that I get from firebug is an exception System.InvalidOperationException and it says that the parameter region_id is missing.It canīt be very difficult because it works without parameters but all the information I find in internet
How to pass gridview particular column values to another page's table header...
View 1 RepliesIn my ASP.Net (2.0) Web Service implementation (The implementation class derives from
System.Web.Services.WebService with WebServiceBinding confirming to WsiProfiles.BasicProfile1_1 .
The SOAP response sent out by the Service has two elements missing :
1> The XML header itself : (<?xml version="1.0">)
2> The opening and closing Envelope tags with NameSpace ("<S:Envelope xmlns:S=http://schemas.xmlsoap.org/soap/envelope/>" and "</S:Envelope>" ).
This results in "breaking" of my client unless the above mentioned headers are inserted at the client end, and my intent is to avoid bypasses at the client end as far as popssible.Is this the default behavior ?
I have a webservice which works 100% fine on my developer machine. Where Web Service is installed on LOCALHOST on my developer machine,Then i went to my servers, I installed webservice on one server and map it with the server where the website is hosted, Then i tried accessing this service using BROWSER from my web server, it worked fine, That means the mapping was done perfect.Then i run my program on web server (website). It worked fine on page1, then on page2, but when i did the same and call same function on page3, It popped me any error of
View 4 RepliesMy WCF Client calls my WCF Service which then calls ASMX Web Service. The problem is i have configured my wcf client and wcf service to windows credentials type but when wcf service calls asmx service the user credentials (default windowsidentity) is not passed to asmx service.
In WCF Service i am able to get user identity by using : Thread.CurrentPrincipal.Identity.Name;
WCF Service - i have disabled anonymous access and enabled windows authentication. ASMX Web Service - i have disabled anonymous access and enabled windows authentication.
WCF Service Config
[Code]....
WebApp1: on IIS and configured with Windows authentication. Get User account from AD.
WebAPP2: a java web app on another windows box in same domain with authentication from AD
On web app1, I have a http handler like
public class MyHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string url = "http://WebApp2/Test";
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create(url);
CredentialCache myCache = new CredentialCache();
NetworkCredential netCredential = new NetworkCredential("myname", "mypassword", "");
myCache.Add(new Uri(url), "Basic", netCredential);
//...
myReq.Credentials = myCache;
//....
}
}
in above way, I can set authentication in code and pass it WebApp2.
But I don't want to put name and password in code. User info already available on WebApp1: in context.User I can find out the user info who already logined into WebApp1, so I want to pass this credential to WebApp2. I have tried to do following:
myReq.Credentials = CredentialCache.DefaultCredentials;
but I am failed becuast there is no data in CredentialCache.DefaultCredentials.
I want to perform a get request on a remote URL and then extract the headers returned.
View 1 RepliesWe are implementing a single sign on mechanism in an enterprise environment, where the token is shared between applications using HTTP header. Now, in order to do the integration test, I need to write an application to simulate this. Is there any way in ASP.NET where I can redirect to another web-page and pass a custom HTTP header in the process?
View 3 RepliesI have the following code where the function codeaddress geocodes the text feild value and returns geocoded value , geocoded value is stored in variable example ,how will i return the variable v2 to the function call and post to asmx webservice.
[code]....
I am trying to call a webservice that requires me to authenticate and then pass the session id returned from the authenticate method to subsequent web service calls. The session id has to be passed as HTTP request header. So I tried using the following code to add the session id to a HTTP request header:
System.Collections.Specialized.NameValueCollection headers =
HttpContext.Current.Request.Headers;
Type t = headers.GetType();
//get the property
System.Reflection.PropertyInfo p = t.GetProperty("IsReadOnly",System.Reflection.BindingFlags.Instance
| System.Reflection.BindingFlags.IgnoreCase | System.Reflection.BindingFlags.NonPublic
| System.Reflection.BindingFlags.FlattenHierarchy);
//unset readonly
p.SetValue(headers, false,
null);
//add a header
headers.Add("Cookie",
"SID=" + sessionId );
The header is supposed to be called "Cookie" and the SID contains the session id. The problem is the last line in the code above gives an exception saying "Operation is not supported on this platform". I am running this code on my dev machine with with Windows XP Professional Service Pack 3 and IIS 5.1. I haven't been able to find any solution to this problem after days of searching. I also tried to deploy my web app on IIS directly but had the same error.
I have a nested repeater and i want to pass value in its header. here is my code so far.. The main problem is the id of the control in header template is also coming from code behind.
<asp:Repeater ID="RptrProgCategory" runat="server">
<ItemTemplate>
<asp:Repeater ID="RptrPrograms" runat="server">
<HeaderTemplate><input type="hidden" id="<%= questvalue%>"/></HeaderTemplate>
[Code]....
There are two applications "Sender", "Receiver"."Receiver" is a asp.net page, running in a serverSender" is not an asp.net page and running in some other server."Sender" is passing a string (eg. userName) through http header."Receiver" is reading the string from http header as followsRequest.Header["userName"].How to pass values through http header? Can I have some samples?
View 5 RepliesI have a GridView and I need update some data inserting HTML CODE; I would need this data been stored encoded and decoded on request.
I cannot in any way disable globally "Request Validation" and not even at Page Level, so I would need a solution to disable "Request Validation" at Control Level.
At the moment I am using a script which should Html.Encode every value being update, butt seems that "Request Validation" start its job before event RowUpdating, so I get the Error "Page A potentially dangerous Request.Form ... ".
void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
foreach (DictionaryEntry entry in e.NewValues)
{
e.NewValues[entry.Key] = Server.HtmlEncode(entry.Value.ToString());
}
PS I USE Wweb Controls not MVC
I want to pass a string to textbox at report header section. how to do this? Devlopment plateform is C# ASP .net. (VS2005)...
View 3 RepliesI have one ajax call web service, and want to add some http headers using javascript, can we do that use setrequestheader in ms ajax?This is my javascript
[Code]....
[Code]....
I'm submitting a request to a web service, but I'm receiving some errors. They've asked to see an example of the xml request and response. I used Visual Studio to consume the web service, so I'm just calling a method in my code - I don't actually see any xml. Is there a way to grab the XML request and response as XML or at least a text string?
View 2 Repliescant read http custome header "MSISDN" from my web service ... same code works on regular asp.net page. Can anyone shade a light on that subject ?
View 2 RepliesI've got this application that works locally and when deployed and using a .mdf SQL Express database file (which I usually use for testing purposes). However, when I change it to work with our SQL Server 2008 the app works but the service doesn't. For example if in my code behind of a page I have a button that adds data to a table such as this it works fine:
public static string connString = @"Data Source=server1;Initial Catalog=Project;Integrated Security=True";
protected void btnAddProj_Click(object sender, EventArgs e)
{
using (var sqlc = new SqlConnection(connString))
{
sqlc.Open();
var cmd = sqlc.CreateCommand();
int intProjectID;
// Add the project info to the database
cmd.CommandText = "INSERT INTO tblProject VALUES(@ProjName,@ProjTeam,@ProjStart,@ProjEnd)";
cmd.Parameters.Add("ProjName", System.Data.SqlDbType.NVarChar).Value = txtProjName.Text;
cmd.Parameters.Add("ProjTeam", System.Data.SqlDbType.Int).Value = ddlTeamSupported.SelectedValue;
cmd.Parameters.Add("ProjStart", System.Data.SqlDbType.NVarChar).Value = txtStartDate.Text;
cmd.Parameters.Add("ProjEnd", System.Data.SqlDbType.NVarChar).Value = txtEndDate.Text;
cmd.ExecuteNonQuery();
}
}
My web.config is setup to use impersonation on that server and all works perfectly well. However, for my service the query doesn't seem to return anything and I get a 400 Bad Request error. The code for the jquery is:
$.ajax({
type: "POST",
async: false,
url: "Services/ProjectService.svc/test",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
console.log(data);
}
});
And for the Service:
[ServiceContract]
public interface IProjectService
{
[OperationContract]
[WebInvoke(ResponseFormat = WebMessageFormat.Json)]
ArrayList test();
}
public static string connString = @"Data Source=server1;Initial Catalog=Project;Integrated Security=True";
public ArrayList test()
{
var sqlc = new SqlConnection(connString);
sqlc.Open();
var cmd = sqlc.CreateCommand();
cmd.CommandText = "SELECT ProjectID FROM tblProject";
var reader = cmd.ExecuteReader();
ArrayList temparray = new ArrayList();
while (reader.Read())
{
temparray.Add(reader[0]);
}
sqlc.Close();
return temparray;
}
If instead of querying the database I have the service just return static data then it works fine. What could cause my service not to be able to connect to the database when the rest of the code behind for the app works?
[Code]....Web Service Getting Request
[Code]....
I've got a Silverlight app that has to accept some initial data when it fires up. That data, unfortunately, MUST come from XML input. In addition, I can't just pass it through the URL because the actual request is coming from a server external to my own.
So the basic setup is this: Remote server needs to launch my app. Remote server pops open a window on the user's PC with a URL directed at a CGI application that can accept the XML input. The CGI app parses the input and spits out an HTML page containing the Silverlight app with all of the init params set. Long story short: When the Silverlight app is opened this way I can't debug it. I attach to the process, but none of the break points can be hit.
I tried every way in the world to get the ASP.NET page that would normally host the Silverlight app to accept the XML in the URL but it would get stripped by ASP.NET because of security reasons and no amount of modifying the config file would fix it (since it was stemming from the other web server presumably).
I have an asp.net web service which has SSL enabled via IIS. It works fine if the user uses https, however I have a user that insists on using http on the url.
What I'd like to do is have the web service (asmx) do the equivalent of the response.redirect to change http to https automatically.
I don't believe that I can do this from a web service so does anyone know a of a similar solution for web services.