无法在非IE浏览器中发布jquery AJAX
我有一个服务,它接受多个参数并安排一个作业。有些参数可能太长,因此我决定使用POST请求。 服务定义如下:无法在非IE浏览器中发布jquery AJAX,jquery,asp.net,ajax,vb.net,http-post,Jquery,Asp.net,Ajax,Vb.net,Http Post,我有一个服务,它接受多个参数并安排一个作业。有些参数可能太长,因此我决定使用POST请求。 服务定义如下: <WebInvoke(Method:="POST", UriTemplate:="scheduleJob?JobDateTime={JobDateTime}&JobName={JobName}&TestCases={TestCases}&IDs={IDs}&UserName={UserName}", ResponseFormat:=WebMessage
<WebInvoke(Method:="POST", UriTemplate:="scheduleJob?JobDateTime={JobDateTime}&JobName={JobName}&TestCases={TestCases}&IDs={IDs}&UserName={UserName}", ResponseFormat:=WebMessageFormat.Json)>
Function ScheduleJob(ByVal JobDateTime As String, ByVal JobName As String, ByVal TestCases As String, ByVal IDs As String, ByVal UserName As String) As String
在通过fiddler进行检查时,我发现IE浏览器发送的请求会在标题中发送POST,但当我使用Mozilla或Chrome时,选项标题似乎会附加到请求中
我阅读了一些帖子,并对我的asp.net做了一些修改:
If HttpContext.Current.Request.HttpMethod = "OPTIONS" Then
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "POST,GET")
HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "172800")
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*")
End If
但似乎什么都不管用。如果我用fiddler中的“POST”来模拟同样的请求,那么事情似乎很酷。唯一的问题是我如何摆脱“选项”
我得到了选项请求的405响应码。标题为:
OPTIONS http://localhost:60403/TaskScheduler.svc/scheduleJob?jobDateTime={12/31/2014%2016:25}jobName={}TestCases={format,localeFormat,_toFormattedString,}Ids={0,}%20+%20UserName={abcd} HTTP/1.1
Host: localhost:60403
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Origin: http://localhost:54249
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
如有其他建议,我们将不胜感激
选项
请求是一个浏览器飞行前请求,在继续完整请求之前检查响应标题Hello@charlietfl,我已经用标题更新了我的问题,我的响应代码只是405。关于如何处理此问题的任何建议?似乎没有最重要的Access Control Allow Origin
标题。我不在asp中工作,但您的Addheader
代码似乎不工作,所以现在需要更改哪个部分?服务或我的ASP.NET代码。我已经在我的应用程序中提到了添加到代码以允许访问控制允许源代码。不确定我是否遗漏了什么。任何指向@charlietflsee的指针,如果这有助于ASP,都会显示您似乎没有的东西和一个nuget包
OPTIONS http://localhost:60403/TaskScheduler.svc/scheduleJob?jobDateTime={12/31/2014%2016:25}jobName={}TestCases={format,localeFormat,_toFormattedString,}Ids={0,}%20+%20UserName={abcd} HTTP/1.1
Host: localhost:60403
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Origin: http://localhost:54249
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache