小编ada*_*aam的帖子

使用CORS避免预检OPTIONS请求

我正在构建一个Angular应用程序,该应用程序与使用ASP.NET Web API 2构建的API交互.我使用基本身份验证通过向Authorization每个需要身份验证的请求发送标头:

Angular片段:

$http.defaults.headers.common['Authorization'] = authHeader;
Run Code Online (Sandbox Code Playgroud)

请求:

Accept:application/json, text/javascript
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Max-Age:1728000
Authorization:Basic [base64 encoded credential couplet here]
Connection:keep-alive
DNT:1
Host: blah.com
Origin:http://localhost:9000
Referer:http://localhost:9000/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/53
Run Code Online (Sandbox Code Playgroud)

这一切都可以,但OPTIONS每次GETPOST请求都会发送预检请求.这主要影响应用程序的感知速度.我已经对CORS"简单请求"进行了大量阅读,似乎为了避免可怕的预检OPTIONS请求是为了避免在我的请求中添加任何自定义标头.我试过许多像发送其他的东西Content-Typetext/plain,但似乎授权头是违反CORS"简单的要求"的要求的东西.

所以我似乎不得不将API移到使用基于令牌的身份验证/授权.为了避免预检请求,似乎我需要将令牌放在查询字符串中.这是可以的,因为它只是一个小的内部网络应用程序,无论如何只能由几个用户访问.我打算在控制器响应上实现缓存.由于每个对控制器操作的请求都会根据当前经过身份验证的用户在查询字符串中具有不同的标记,这会使缓存无效吗?

所以:

  1. 如何避免预检请求(如果可能的话,使用自定义授权标头)
  2. 如果1.)不可能,并且我转移到基于令牌的身份验证,我将无法缓存控制器操作的API响应
  3. 什么是最广泛使用的方法来避免预检请求,还安全地授权用户?

nb我知道SO上和网上其他地方还有其他几个关于此的线程,但是没有一个关于是否有可能在使用自定义授权头时避免对GETs和POSTs的预检请求提供明确的答案HTTP.

asp.net http cors asp.net-web-api angularjs

17
推荐指数
1
解决办法
6382
查看次数

Java.Util.Scanner的NoSuchElementException

我是Java的新手,但我正在阅读Java:How to program(第9版)这本书并且已经达到了一个例子,对于我的生活,我无法弄清楚问题是什么.

这是教科书中源代码示例的(略微)增强版本:

import java.util.Scanner;
public class Addition {
  public static void main(String[] args) {
    // creates a scanner to obtain input from a command window

    Scanner input = new Scanner(System.in);

    int number1; // first number to add
    int number2; // second number to add
    int sum; // sum of 1 & 2

    System.out.print("Enter First Integer: "); // prompt
    number1 = input.nextInt(); // reads first number inputted by user

    System.out.print("Enter Second Integer: "); // prompt 2 
    number2 = input.nextInt(); …
Run Code Online (Sandbox Code Playgroud)

java java.util.scanner

15
推荐指数
1
解决办法
7万
查看次数

将ASP.NET文本框控件.text内容转换为日期/时间格式

我正在尝试插入数据库 - 有关事件的各种详细信息.asp.net文本框正在使用Calendar Extender(因此弹出一个小日历并使用正确格式化的日期填充文本框).Access数据库中的EventDate字段的类型为Date/Time.我需要将文本/字符串转换为日期/时间格式

到目前为止我试过这个:

VB:

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

    Dim oleDbConn As New OleDb.OleDbConnection(ConfigurationManager.ConnectionStrings("BookMeetConnString").ConnectionString)
    Dim SqlString As String = "Insert into Events(EventTitle,EventDescription,EventDate,EventCategory) Values
   (@f1,@f2,@f3,@f4)"
    Dim cmd As OleDbCommand = New OleDbCommand(SqlString, oleDbConn)

    Dim strDate As String = tb_eventdate.Text
    Dim dtfi As New System.Globalization.DateTimeFormatInfo
    dtfi.ShortDatePattern = "dd/MM/yyyy"
    dtfi.DateSeparator = "/"
    Dim objDate As DateTime = Convert.ToDateTime(strDate, dtfi)

    cmd.CommandType = CommandType.Text
    cmd.Parameters.AddWithValue("@f1", tb_eventtitle.Text)
    cmd.Parameters.AddWithValue("@f2", tb_eventdescription.Text)
    cmd.Parameters.AddWithValue("@f3", tb_eventdate.Text)
    cmd.Parameters.AddWithValue("@f4", dd_eventcategory.Text)
    oleDbConn.Open()
    cmd.ExecuteNonQuery()
    System.Threading.Thread.Sleep("2000")
    Response.Redirect("~/calendar.aspx")
End Sub …
Run Code Online (Sandbox Code Playgroud)

vb.net asp.net ms-access calendarextender datetimeformatinfo

6
推荐指数
1
解决办法
2万
查看次数

包含/在 Azure 搜索中的数组(预览)

我正在使用新的(预览版)Azure 搜索 SDK(此处的信息)。我正在使用 oData 表达式语法来使用$filter参数构建我的搜索查询,并且我希望能够将一组 id 提供给端点。BrandId 字段位于我的 Azure 搜索索引中,它是可搜索、可过滤、可排序和可分面的。理想情况下,我希望能够按照以下方式做一些事情:

http://host/service/Products?brands=["1","2"]
Run Code Online (Sandbox Code Playgroud)

请参阅此处标题为“复杂和集合文字”部分下的规范

我不知道使用什么语法来在$filter查询中包含集合文字语法。所以我目前只是将逻辑ORs 的负载串连在一起以形成查询,而不是理想的:

var sp = new SearchParameters();

string filter = "$filter=";

if(brands.Length > 0)
{   
    int counter = 0;

    foreach(string brand in brands)
    {
        if(counter == 0)
        {
            filter += "(brandId eq '" + brand + "'";
        }   
        else if(counter == (brands.Count() - 1))
        {
            filter += " or brandId eq '" + brand + "')"; …
Run Code Online (Sandbox Code Playgroud)

c# azure azure-cognitive-search

6
推荐指数
1
解决办法
3130
查看次数

@viewport,@ media和LESS

我最近将一些CSS转换为LESS以用于.NET应用程序(我使用dotless for .NET,http://www.dotlesscss.org/在运行时编译LESS).

编译器正在落在这两个代码块上:

@viewport {
  width: device-width;
}
/* Add a min-width for IE 8 and lower */
@media \0screen\,screen\9 {
    body {
        min-width: 960px;
    }
}
Run Code Online (Sandbox Code Playgroud)

仅供您参考,上面的媒体查询是一种针对IE的hacky方式

我怎么能"轻视"这些代码块呢?

css viewport less media-queries

5
推荐指数
1
解决办法
1669
查看次数

在 VB.NET 中使用 LINQ 将 DataTable 转换为字典

我有一个 DataTable,它使用此 SQL 从 SQL 表中提取结果:

SELECT firstName,lastName,companyName,address1,countryCode FROM dbo.users
Run Code Online (Sandbox Code Playgroud)

我想将此 DataTable 转换为字典式结构,上面每个字段的键是列名,值是该列的每个 DataRow 的值。我对如何在 C# 中做到这一点有一个模糊的想法,但 VB.NET LINQ 语法完全不同,所以我正在努力弄清楚如何做到这一点..

结构(在 JSON 中可视化)将是这样的:

[
    {
        "firstName": "Adam",
        "lastName": "Smith",
        "address1": "123 Old St",
        "companyName": "Fake Company",
        "countryCode": "us"
    },
    {
        "firstName": "Paul",
        "lastName": "Jones",
        "address1": "474 Old St",
        "companyName": "Fake Company",
        "countryCode": "gb"
    }
]
Run Code Online (Sandbox Code Playgroud)

linq vb.net datatable

3
推荐指数
1
解决办法
7305
查看次数

解析 Postman 中的日期对象以转换为 C# DateTime

我想知道如何解析 JSON 对象中的日期,该对象可以在 WebApi 控制器中转换为 DateTime。

myObject: {
              "key":"value",
               ...
              "DateOfBirth": "" // <-- What should I parse my date as here?
          }
Run Code Online (Sandbox Code Playgroud)

仅供参考,我正在使用 Postman 来测试我的 RESTful 端点。

c# datetime json json.net postman

3
推荐指数
2
解决办法
3万
查看次数

将当前案例作为变量访问

我使用switch..case在我的页面上显示不同的东西,具体取决于产品ID:

            switch (productID)
            {
                case 1:
                    string theSQL = "SELECT * FROM products WHERE id = " + theCurrentCase + "ORDER BY id DESC";
                    DataTable theDT = dbConnectionAndQuery.dbResults(theSQL, ConfigurationManager.ConnectionStrings["mainConn"].ConnectionString);
                    break;
            }
Run Code Online (Sandbox Code Playgroud)

有没有办法访问案例值(即上例中的1)?

c#

0
推荐指数
1
解决办法
63
查看次数