我试图在网页和c#套接字之间交换数据。 c#套接字在localhost上运行。 该网页在服务器上运行并指向本地主机。
当网页向c#套接字发送Get请求时,会显示跨域错误。
XMLHttpRequest cannot load http://localhost:12345/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.1.3:9000' is therefore not allowed access.
这是在网页上运行的JS(Angular)。
var serviceUrl = 'http://localhost:12345';
var service = $resource(
serviceUrl,{}, {
getCard: {
method: "GET"
}
}
);
service.getCard();
这是c#console应用程序代码的一部分。
private static void Send(Socket handler, String data)
{
// Convert the string data to byte data using ASCII encoding.
byte[] byteData = Encoding.ASCII.GetBytes(data);
// Begin sending the data to the remote device.
handler.BeginSend( byteData
, 0
, byteData.Length
, 0
, new AsyncCallback(SendCallback)
, handler
);
如何将标题信息添加到响应中。 标头必须是:Access-Control-Allow-Origin:* 当我将它添加到字符串前面时,它不起作用。
答案 0 :(得分:0)
在为页面提供服务时,必须添加标头,而不是从套接字响应中添加标头。它只是一个普通的旧HTTP标题。
如果您使用IIS来提供网页,请在发送页面之前执行以下操作:
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");