Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.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
Javascript MS VS 2005和HTTP POST/CORS/Firefox中的Scrptservice Web服务_Javascript_Asp.net_Firefox_Cross Site - Fatal编程技术网

Javascript MS VS 2005和HTTP POST/CORS/Firefox中的Scrptservice Web服务

Javascript MS VS 2005和HTTP POST/CORS/Firefox中的Scrptservice Web服务,javascript,asp.net,firefox,cross-site,Javascript,Asp.net,Firefox,Cross Site,我正在尝试使用VS2005和IIS6开发Ajax Web服务。它的目的是查询数据库并根据过滤后的MS Access表以文本/csv(不是我的选择!)的形式返回记录。该服务必须可以从任何客户端浏览器(只要它支持Ajax和XMLHTTPRequest对象)访问,最有可能的是Linux服务器。这显然涉及到跨站点HTTP请求的现象。当客户机是MSIE8时,它工作起来没有任何麻烦,可能是因为该Web工具的安全性实现过于草率。问题出现在Firefox 12中,调用服务的函数返回HTTP/1.1 403禁止。

我正在尝试使用VS2005和IIS6开发Ajax Web服务。它的目的是查询数据库并根据过滤后的MS Access表以文本/csv(不是我的选择!)的形式返回记录。该服务必须可以从任何客户端浏览器(只要它支持Ajax和XMLHTTPRequest对象)访问,最有可能的是Linux服务器。这显然涉及到跨站点HTTP请求的现象。当客户机是MSIE8时,它工作起来没有任何麻烦,可能是因为该Web工具的安全性实现过于草率。问题出现在Firefox 12中,调用服务的函数返回HTTP/1.1 403禁止。VB中的web服务代码如下所示:

Option Explicit On
Option Strict On

Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel
Imports System.Web.Script.Services

Imports System
Imports System.Data
Imports System.Data.OleDb
Imports System.Data.Odbc


<System.Web.Services.WebService(Namespace:="http://chpt.co.uk/CastusDataTransport")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> <ScriptService()> _
Public Class TransferToolData
    Inherits System.Web.Services.WebService

    Const AccConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data       Source=c:\inetpub\wwwroot\Castus_Server\App_Data\db1.mdb"

<WebMethod()> _
Public Function GetJobRecords(ByVal ClientID As Long) As String

    LogGrabJobData("Request for Job Data")

    Return GrabJobData(ClientID)
End Function

Private Function GrabJobData(ByVal ID As Long) As String

    Dim strData As String
    Dim MyDB As New OleDbConnection
    Dim drGet As OleDbDataReader
    Dim cmdRetrieve As New OleDbCommand
    Dim cs As String
    Dim RecCount As Long

    cs = AccConStr
    MyDB = New OleDbConnection(cs)
    cmdRetrieve.Connection = MyDB
    cmdRetrieve.CommandText = "SELECT * FROM Job_Data WHERE Client_ID = " & ID.ToString
    cmdRetrieve.Connection.Open()
    drGet = cmdRetrieve.ExecuteReader
strData = "’Job_ID’, ’Client_ID’, ’Status_ID’, ’Product_ID’, ’Serial_No’, ’Date_IN’, ’RA_Scale’, ’Location’, ’Manager’, ’Operator’, ’Stage’\n"

    RecCount = 0

    Do While (drGet.Read())
        strData &= Convert.ToString(drGet.Item("Job_ID")) & ","
        strData &= Convert.ToString(drGet.Item("Client_ID")) & ","
        strData &= Convert.ToString(drGet.Item("Status_ID")) & ","
        strData &= Convert.ToString(drGet.Item("Product_ID")) & ","
        'strData &= DelimitTextQuotes(Convert.ToString(drGet.Item("Client_Ref"))) & ","
        strData &= DelimitTextQuotes(Convert.ToString(drGet.Item("Serial_No"))) & ","
        strData &= Format(drGet.Item("Date_IN"), "d") & ","
        'strData &= DelimitTextQuotes(Convert.ToString(drGet.Item("Notes"))) & ","
        strData &= Convert.ToString(drGet.Item("RA_Scale")) & ","
        strData &= DelimitTextQuotes(Convert.ToString(drGet.Item("Location"))) & ","
        strData &= DelimitTextQuotes(Convert.ToString(drGet.Item("Manager"))) & ","
        strData &= DelimitTextQuotes(Convert.ToString(drGet.Item("Operator"))) & ","
        strData &= Convert.ToString(drGet.Item("Stage")) & "\n"

        RecCount += 1
    Loop

    Return strData
End Function
403错误似乎来自客户端的飞行前请求(我注意到IE只是跳过了这个错误——我希望其他浏览器现在就降低自己的设计错误)。IIS Web应用程序配置为返回以下HTTP头:

Access-Control-Allow-Origin "*"
Access-Control-Allow-Headers  Origin,cache-control,man,messagetype,x-requested-with
Access-Control-Allow-Methods POST,OPTIONS
Firefox浏览器/服务器发送以下标题:

Request URL:
http://chpt.co.uk/Castus_Server/TransferToolData.asmx/GetJobRecords

Request Method:
OPTIONS

Status Code:
HTTP/1.1 403 Forbidden


Request Headers
15:05:03.984

  Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  Accept-Encoding:gzip, deflate
  Accept-Language:en-gb,en;q=0.5
  Access-Control-Request-Headers:content-type
  Access-Control-Request-Method:POST
  Cache-Control:no-cache
  Connection:keep-alive
  Host:chpt.co.uk
  Origin:null
  Pragma:no-cache
  User-Agent:Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0


Response Headers
?1984ms

   Access-Control-Allow-Headers:Origin,cache-control,man,messagetype,x-requested-with
   Access-Control-Allow-Methods:POST
   Access-Control-Allow-Origin:*
   Access-Control-Max-Age:120
   Content-Length:1827
   Content-Type:text/html
   Date:Thu, 17 May 2012 14:04:54 GMT
   MicrosoftOfficeWebServer:5.0_PubServer:Microsoft-IIS/6.0
   X-Powered-By:ASP.NET

现在我已经阅读了关于这个主题的“圣经”网页[https://developer.mozilla.org/en/http_access_control#Access-控制允许方法][1],并且已经学到了一些东西,但不是我目前问题的解决方案。我只是想知道是否有人能看到我哪里做错了,或者给我指出了正确的方向。希望我没有让每个人都感到厌烦,并且我已经提供了关于我的困境的足够详细的信息。

很明显,似乎没有人知道这个问题,我不能再浪费时间了(我已经设计并提供了一个变通解决方案),我将结束这个问题。在使用ScriptService()webservice时,跨站点HTTP请求API似乎存在一个小故障。我将在几个月后再试一次,看看问题是否“自行解决”!当我有了一个解决方案,我会把它公布在这里。。。 吉姆·麦戈德里克 cablesafe.co.uk

Request URL:
http://chpt.co.uk/Castus_Server/TransferToolData.asmx/GetJobRecords

Request Method:
OPTIONS

Status Code:
HTTP/1.1 403 Forbidden


Request Headers
15:05:03.984

  Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  Accept-Encoding:gzip, deflate
  Accept-Language:en-gb,en;q=0.5
  Access-Control-Request-Headers:content-type
  Access-Control-Request-Method:POST
  Cache-Control:no-cache
  Connection:keep-alive
  Host:chpt.co.uk
  Origin:null
  Pragma:no-cache
  User-Agent:Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0


Response Headers
?1984ms

   Access-Control-Allow-Headers:Origin,cache-control,man,messagetype,x-requested-with
   Access-Control-Allow-Methods:POST
   Access-Control-Allow-Origin:*
   Access-Control-Max-Age:120
   Content-Length:1827
   Content-Type:text/html
   Date:Thu, 17 May 2012 14:04:54 GMT
   MicrosoftOfficeWebServer:5.0_PubServer:Microsoft-IIS/6.0
   X-Powered-By:ASP.NET